バナー画像

Java では、自身のプロセスを終了させる方法として、exit メソッドが用意されています。また、関数やループと途中で抜ける場合では、returnbreak 構文を使用します。

この記事では、用途に合わせて処理を途中で終了させる方法を解説します。

exitメソッド

exitメソッドはプログラムを強制的に終了させるときに使用します。

このメソッドを使用すると、プロセスが引数に指定した戻り値で強制的に終了します。

実際にexitメソッドでプロセを終了すサンプルコードを見ていきましょう。

public class Main {
    public static void main(String[] args) {

        System.out.println("exit 実行前のメッセージ");

        System.exit(0);

        System.out.println("exit 実行後のメッセージ(表示されない)");
    }
}

上のコードを実行すると次のような結果になります。

exit 実行前のメッセージ

このように、exit メソッドは、そこでプログラムを終了させ、その後の処理は実行されません。

ポテパンダの一言メモ

上の例では、main メソッド内で exitメソッドを呼び出していますが、それ以外のメソッドから呼ばれた場合でも、exitメソッドは、その時点でプロセスを終了します。

exit はfinally 節も実行されない

Java では、try-catch構文で finally を書くことで、例外の発生有無に関わらず、最後に必ず実行される処理を定義することができます。

試しに、次のような例外が発生する処理を実行させて finally ブロックの処理が実行されるか確認してみましょう。

public static void main(String[] args) {
  try {
    // わざとゼロ除算を行い、例外が発生する処理を行う
    int a = 1;
    int b = 0;
    int c = a / b;
  } catch (Exception e) {
    // 例外が発生した時の処理
    System.out.println("例外が発生しました");
  } finally {
    //例外の有無に関わらず、最後に必ず実行される処理
    System.out.println("finallyが実行されました");
  }
}

実行結果

例外が発生しました
finallyが実行されました

ただし、exit を使った場合は例外で、finallyブロック内の処理は実行されずに、即座にプロセスが終了します。

try ブロックの中で、 exit メソッドを呼んだ場合の動きを確認してみましょう。

public static void main(String[] args) {
  try {
    System.out.println("exit実行前のメッセージ");
    System.exit(0);
  } catch (Exception e) {
    // 例外が発生した時の処理
    System.out.println("例外が発生しました");
  } finally {
    //例外の有無に関わらず、最後に必ず実行される処理
    System.out.println("finallyが実行されました");
  }
}

実行結果

exit実行前のメッセージ

メソッドを抜ける return

次は、return について見ていきましょう。

return 文は、現在実行されているメゾットを終了し、呼出元のメソッドに制御を戻すときに使用します。

また、戻り値があるメソッドでは、return の呼び出し時に、戻り値も合わせて指定します。

returnのサンプルコード

では、return でメソッドの処理を途中で抜け、
呼び出し元のメソッドに戻り値を返すこ例を見ていきましょう。

public static void main(String[] args) {
  //戻り値がないメソッドの呼び出し
  test1(1, 2);

  //戻り値があるメソッドの呼び出し
  int ret = test2(3, 4);
  System.out.println("test2の戻り値=" + ret);
}

//戻り値がないメソッド
public static void test1(int a, int b) {
  System.out.println(a + b);
  return; 
}

//戻り値があるメソッド
public static int test2(int a, int b) {
  //戻り値があるメソッドの場合は、return に戻り値を指定する
  return a + b;
}

return はfinally 節も実行される

前の章で解説した exit とは異なり、return は try-catch ブロック内で処理を抜けな場合にも、
finally ブロックの処理が実行されます。

public static void main(String[] args) {
  try {
    System.out.println("return 実行前のメッセージ");
    return;
  } catch (Exception e) {
    // 例外が発生した時の処理
    System.out.println("例外が発生しました");
  } finally {
    //例外の有無に関わらず、最後に必ず実行される処理
    System.out.println("finallyが実行されました");
  }
}

実行結果

return 実行前のメッセージ
finallyが実行されました

繰り返し処理の途中で抜ける break

break 文は for 文や while 文などの繰り返し処理を、途中で抜ける為のものです。break が呼ばれると、繰り返しの終了条件を無視して、その時点で繰り返し処理を終了します。

次の例は、変数 i5 なった時点で for 文の繰り返しを break で抜けるサンプルコードです。

public static void main(String[] args) {
  for (int i = 0; i < 10; i++){
    System.out.println("i=" + i);
    if (i == 5) {
      break;
    }
  }
  System.out.println("for ループが終了しました");
}

実行結果

i=0
i=1
i=2
i=3
i=4
i=5
for ループが終了しました

入れ子になった繰り返しの場合は、内側のループだけを抜ける

2つ以上のforwhile などが入れ子になった繰り返しで break を実行した場合は、最も内側のループから抜けます。つまり、外側のループからは抜けることはできないため、次のようなコードの場合、その側のループは、終了条件を満たすまで繰り返し処理を続けます。

public static void main(String[] args) {
  for (int i = 0; i < 3; i++){
    System.out.println("i=" + i);
    for (int j = 0; j < 3; j++) {
      if (j == 1) {
        break;
      }
    }
  }
  System.out.println("for ループが終了しました");
}

もし、入れ子になったループの中で、特定の条件に達した時に、すべてのループから脱出したい場合は、入れ子になった数だけ break 文を実行する必要があります。

まとめ

exit 処理の途中でプロセスを終了させる方法や、returnbreak でメソッドや繰り返し処理を抜ける方法を解説してきました。

この記事で紹介したように、処理を抜ける用途によって使用するメソッドや構文が異なるため、その役割を理解して使い分けていきましょう。

【関連記事】
【必須スキル】繰り返し処理で利用するJava for文の使い方について解説!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。