Java 非検査例外のサンプル(非チェック例外)

Javaの非検査例外のサンプルです。

目次

非検査例外とは

  • 非チェック例外 (unchecked exception)とも呼ばれます。
  • RuntimeExceptionクラスとその配下の例外クラスのことです。(下図のRuntimeExceptionクラスと黄色の部分)
    非検査例外
  • 実行時に発生する例外です。
  • 例外処理の記述(try-catch)がなくてもコンパイルエラーになりません。
  • try-catchがない状態で非検査例外が発生した場合、例外は呼び出し元に投げられます。
  • 例外が拾われずに呼び出し元に投げられ続け、mainで終わった場合は落ちます。
  • 以下はJava8 API仕様のRuntimeExceptionクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/RuntimeException.html

主な非検査例外

以下は、主な非検査例外です。

クラス名(例外名) 説明
NullPointerException nullポインタへのアクセス
ArrayIndexOutOfBoundsException 配列の添字の不正
IllegalArgumentException 引数の値のエラー
ArithmeticException 0による除算

非検査例外のサンプルコード(try-catchあり)

非検査例外のサンプルコードです。
7行目からtry-catchを記述しています。
26行目で0による除算のため非検査例外(ArithmeticException)を発生させています。
11行目で例外をキャッチしています。

package test1;

public class Test1 {
	public static void main(String[] args) {
		
		// メソッドを呼ぶ側
		try {
			Sample.runSample();

		// 例外をキャッチ
		} catch (ArithmeticException e) {
			System.out.println(e); 
			//java.lang.ArithmeticException: / by zero

		}finally {
			System.out.println("finallyの実行"); 
		}
	}
}
class Sample {
	// メソッドが呼ばれる側
	static void runSample() {
		
		// 0による除算のためArithmeticExceptionの例外が発生
		int i = 0;
		i = 10 / 0; 
	}
}

非検査例外のサンプルコード(try-catchなし)

try-catchがないため、呼び出し元に例外が投げ続けられるコードです。
9行目は、18行目のメソッドを呼び出しています。
20行目は、25行目のメソッドを呼び出しています。
29行目で0による除算のため非検査例外(ArithmeticException)を発生します。
try-catchがないため呼び出し元の20行目に例外が投げられます。
20行目でもtry-catchがないため呼び出し元の9行目に例外が投げられます。
11行目で例外がキャッチされます。

package test1;

public class Test1 {
	public static void main(String[] args) {
		Sample s = new Sample();

		try{
			// メソッドの呼び出し元
			s.runSample();			

		} catch (ArithmeticException e) {
			System.out.println(e);
			//java.lang.ArithmeticException: / by zero
		}
 	}
}
class Sample {
	void runSample(){

		FileTest.calc();
		// try-catchがないので例外はさらに呼び出し元に投げられる
	}
}
class FileTest {
	static void calc() {

		// try-catchがないため呼び出し元に例外が投げられる
		int i;
		i = 10/0;
	}
}

関連の記事

Java 検査例外のサンプル(チェック例外)
Java 例外処理のthrowのサンプル
Java 独自の例外を作成するサンプル
Java printStackTraceとは
Java リソースを自動でクローズするサンプル(try-with-resources構文)

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る