Javaでプログラムを終了させるには、「exitメソッド」を使います。
この記事では、exitメソッドの特徴や使い方などについて解説します。
Exit Code(System.exitメソッド)とは
exitメソッドを使うと、プログラムをその場で終了させます。
記述方法は次の通りです。
System.exit(0);
exitメソッドの引数に「0」を指定すると正常終了、「0以外」を指定すると異常終了を意味します。
exitメソッドの使い方
では、exitメソッドの使い方を見ていきましょう。
exitメソッドは、その場でプログラムを終了させるので、exitメソッド以降に書かれた処理は実行されません。
次のように記述して、プログラムを実行してみます。
■記述例 public class Main { public static void main(String[] args){ System.out.println("exitメソッドの前に書かれた文章です"); System.exit(0); System.out.println("exitメソッドの後に書かれた文章です"); } } ■実行結果 mbp:Desktop potepan$ java Main exitメソッドの前に書かれた文章です
このように、exitメソッド以降の処理は実行されません。
exitメソッドとreturn文の挙動の違い
exitメソッド と return文 は何が違うんですか?
exitメソッドがプログラムを終了するのに対し、return文はメソッドを終了します。実際に挙動を確認してみましょう!
例えば、次のようにプログラムを記述しました。
変数sum と criteria の値が一致すれば、return文が実行されます。
■記述例 public class Main { public static void main(String[] args){ System.out.println("計算を開始します!"); calc(); System.out.println("計算を終了しました!"); } public static void calc(){ int num01 = 10; int num02 = 20; int sum = num01 + num02; int criteria = 30; if( sum == criteria ) { System.out.println("計算結果 : " + sum); return; } else { System.out.println("計算結果が合わないため、プログラムを終了します!"); System.exit(1); } } }
return文は、メソッドを終了させる文なため、プログラム自体は終了しません。
そのため、実行結果は次のようになります。
■実行結果 mbp:Desktop potepan$ java Main 計算を開始します! 計算結果 : 30 計算を終了しました!
一方、exitメソッドは先述したようにプログラムを終了させます。
そのため、criteriaの値を変更してプログラムを実行してみると、実行結果は次のようになるのです。
■実行結果 mbp:Desktop potepan$ java Main 計算を開始します! 計算結果が合わないため、プログラムを終了します!
また、exitメソッドでプログラムを終了させた場合、finallyブロック内の処理も実行されないという特徴があります。
■記述例 public class Main { public static void main(String[] args){ try { System.out.println("tryで実行された処理です!"); return; } catch (Exception e) { System.out.println("catchで実行された処理です!"); } finally { System.out.println("finallyで実行された処理です!"); } } } ■実行結果 mbp:Desktop potepan$ java Main tryで実行された処理です! finallyで実行された処理です!
■記述例 public class Main { public static void main(String[] args){ try { System.out.println("tryで実行された処理です!"); System.exit(0); } catch (Exception e) { System.out.println("catchで実行された処理です!"); } finally { System.out.println("finallyで実行された処理です!"); } } } ■実行結果 mbp:Desktop potepan$ java Main tryで実行された処理です!
for文をexitメソッドで終了
exitメソッドは、for文の中でも使用可能です。
例えば、次のプログラムでは変数iが「8」になった時点でプログラムを終了させています。
■記述例 public class Main { public static void main(String[] args){ System.out.println("---ループを開始します---"); for (int i = 0; i < 10; i++) { System.out.println(i + "回目の処理です"); if (i == 8) { System.out.println("---プログラムを終了します---"); System.exit(0); } } System.out.println("---ループを終了します---"); } } ■実行結果 mbp:Desktop potepan$ java Main ---ループを開始します--- 0回目の処理です 1回目の処理です 2回目の処理です 3回目の処理です 4回目の処理です 5回目の処理です 6回目の処理です 7回目の処理です 8回目の処理です ---プログラムを終了します---
このように、ループが終了しています。
「プログラムを終了するのではなく、for文を抜けたいんだけど」
こんな場合は、「break文」「continue文」を使いましょう!
break文は、ループ処理を中断し、途中で抜けるときに使える構文です。
一方、continue文は、ループ処理の途中で処理をスキップし、次のループ処理に移るときに使える構文です。
実際にそれぞれの構文の処理を見ていきましょう。
まずは、break文です。
■記述例 public class Main { public static void main(String[] args){ System.out.println("---ループを開始します---"); for (int i = 0; i < 10; i++) { System.out.println(i + "回目の処理です"); if (i == 8) { System.out.println("---breakを実行します---"); break; } } System.out.println("---ループを終了します---"); } } ■実行結果 mbp:Desktop potepan$ java Main ---ループを開始します--- 0回目の処理です 1回目の処理です 2回目の処理です 3回目の処理です 4回目の処理です 5回目の処理です 6回目の処理です 7回目の処理です 8回目の処理です ---breakを実行します--- ---ループを終了します---
実行結果をわかる通り、8回目の処理でループが終了しているのがわかります。
しかし、プログラムは終了せずに、最後の「—ループを終了します—」まで表示されていますね。
次に、continue文です。
■記述例 public class Main { public static void main(String[] args){ System.out.println("---ループを開始します---"); for (int i = 0; i < 10; i++) { System.out.println(i + "回目の処理です"); if (i == 8) { System.out.println("---continueを実行します---"); continue; } } System.out.println("---ループを終了します---"); } } ■実行結果 mbp:Desktop potepan$ java Main ---ループを開始します--- 0回目の処理です 1回目の処理です 2回目の処理です 3回目の処理です 4回目の処理です 5回目の処理です 6回目の処理です 7回目の処理です 8回目の処理です ---continueを実行します--- 9回目の処理です ---ループを終了します---
こちらは、8回目の処理の後に「—continueを実行します—」が表示され、次の処理(9回目)に移っています!
このように、それぞれ挙動が異なるので、使い分けるようにしましょう!
まとめ
Javaのexitメソッドについて解説しました。
exitメソッドは、プログラムを完全に終了させたい場合に使います。
finallyブロックも実行しないといった特徴があるので、ぜひ使い方を覚えてプログラムを実装してみてください!
プログラムを終了させたい場合は exitメソッド を使う!
メソッドを終了させたい場合は return文 を使う!