検索

キーワード


【Java】プログラムの処理の終了の使い方を解説! exitメソッドとreturn文の違いとは?

  • 公開日:2020-08-26 04:33:32
  • 最終更新日:2021-01-25 17:23:51
【Java】プログラムの処理の終了の使い方を解説! exitメソッドとreturn文の違いとは?



こんにちは。駆け出しプログラマーの松倉です!

ここでは、exitメソッドを用いたプログラムの終了と return文との違いについて紹介・解説します。

プログラミング未経験の方、Javaについて勉強している方、これから勉強したいと思っている方の参考になれば幸いです! 

関連記事リンク:【Java】 メソッドの役割や型との関係、オーバーロードの使い方【Java】public static void main(String[] args)ってどういう意味? main メソッドの宣言ルール!【Java】例外クラスの制御方法 3種類の基本と使い方を解説



プログラムの終了

プログラムでコードを書く場合、エラーが起こって処理を終了させなければいけない時が多々あります。

Javaにはプログラムを終了するために「exitメソッド」と「return文」が用意されています

これらはどちらもプログラムを終了することができますが、使い方が大きく異なります。


この記事ではプログラムを終了する方法について以下の解説をします。

  • exitメソッド
  • return文との違い



exitメソッド

exitメソッドは Systemクラスに含まれるメソッドの一つであり、プログラムを強制的に終了させるために使います。

処理の途中であっても exitメソッドが実行されるとそれ以降のプログラムは終了します。

そのためその後の処理は実行されません。


 exitメソッドの使い方

System.exit(Exit Code);

通常 exitメソッドの引数には終了コード(Exit Code)として、「0」を指定します。

「0」を指定した場合には正常に終了したことを意味し、終了コードが「0」以外の値を指定した場合には異常終了を意味します。


exitメソッドを使ったサンプルコードを確認しましょう。

public class Sample1 {
	public static void main(String[] args) {
		System.out.println("成功");
		System.exit(0);
		System.out.println("失敗");
	}
}


実行結果:

成功

実行結果から、exitメソッドの後の処理は実行されていないことが確認できます。



return文との違い

一般的に return文は関数から値を返すことに使われますが、それだけでなく Javaのメソッドの処理を終了することができます。

return文が実行されるとメソッドはそこで処理を終了し、呼び出し元に式を評価した結果を戻り値として返します


大きな違いは exitメソッドが実行されるとプログラムそのものを終了finallyブロック内の処理は実行されません

一方で return文そのステップで呼び出し元に処理を返しfinallyブロック内の処理は実行されます

mainの中で returnが行われるとプログラムが終了します


return文の使い方

return;
return;

※メソッドの戻り値が void型の場合には式の部分は省略します。


「return文」「exitメソッド」を使ったサンプルコードを比較し、プログラムの終了処理の違いを確認しましょう。

return文を使ったサンプルコード

public class Sample2 {
	public static void main(String[] args) {
		try {
			System.out.println("処理1");
			return;
		} catch (Exception e) {
			System.out.println("処理2");
		} finally {
			System.out.println("処理3");
		}
	}
}


実行結果:

処理1
処理3


 exitメソッド

public class Sample3 {
	public static void main(String[] args) {
		try {
			System.out.println("処理1");
			System.exit(0);
		} catch (Exception e) {
			System.out.println("処理2");
		} finally {
			System.out.println("処理3");
		}
	}
}


実行結果:

処理1

実行結果から、return文では catch内の処理が実行されず、後ろの finally内の処理が実行されています。

一方で exitメソッド以降の処理が実行されずプログラムが終了していることが確認できます。


まとめ

今回の記事では「exitメソッド」と「return文」でプログラムの終了の方法を解説しました。

プログラムの終了処理は今後必要になることが多くあると思います。

exitメソッドはメソッド以降のプログラムを終了できます

return文はプログラムが即終了するわけではないため、戻り値を返却することができます。

これら2つの違いをしっかりと覚え、自分の使うプログラムによって戻り値が必要なのかどうか考えて使い分けて使いましょう!


関連記事リンク:【Java】 メソッドの役割や型との関係、オーバーロードの使い方【Java】public static void main(String[] args)ってどういう意味? main メソッドの宣言ルール!【Java】例外クラスの制御方法 3種類の基本と使い方を解説

【著者】

松倉祥大

はじめまして。フォワードソフト株式会社の松倉です。
システムエンジニアとして働き始めたのが2020年4月です。経験や知識がない状態で入社した私は、フォワードソフトの教育研修で一からプログラミングの勉強をしました。教育研修を卒業後、Javaのプログラミングについて初学者向けの記事を共同で制作しています。
知識や経験はまだまだですが、これからいろんな職場で様々な経験しながら勉強していきたいと思っています。

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様