Java で未処理の例外
このチュートリアルでは、未処理の例外とは何か、および Java でそれを処理する方法を紹介します。
例外は、コードの実行を異常に停止し、コードの終了につながる状態です。
Java では、例外は、不正なコードまたはメモリの問題などのシステム障害のいずれかによって発生する可能性があります。Java は、例外を処理するための完全なサポートを提供するため、コードを終了せずにスムーズに実行し、目的の結果を提供できます。
処理されない例外は未処理の例外と呼ばれ、実行前にコードを終了します。
この記事では、未処理の例外とは何か、およびそれを処理する方法について説明します。いくつかの例で理解しましょう。
Java で未処理の例外
この例では、ユーザーから 2つの整数値を取得し、それらを除算します。このコードはエラーや例外なしで正常に機能しますが、Java はコードを実行せず、除数がゼロの場合は例外をスローします。
ここでは例外ハンドラーを使用しなかったため、コードは実行を停止し、異常終了します。コンソールを見て、例外の理由を理解できます。
この例外は未処理であり、適切に処理されなかった場合にどれほど危険であるかがわかります。
import java.util.Scanner;
public class SimpleTesting {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter any two values");
int val1 = sc.nextInt();
int val2 = sc.nextInt();
double result = val1 / val2;
System.out.println("result " + result); // this statement does not execute
}
}
出力:
Enter any two values
30
0
Exception in thread "main" java.lang.ArithmeticException: / by zero
at myproject.SimpleTesting.main(SimpleTesting.java:13)
Java で処理された例外
ここでは、ハンドラー(try-catch ブロック)を使用して例外を処理しています。このコードは、try-catch
ブロックがあり、例外の後でもコードを実行できることを除いて、上記のコードと似ています。
コードの最後の print ステートメントに注意してください。上記のコードでは、例外のため、このステートメントは実行されません。
それでも、コードが終了しないため、以下のコードで例外が発生した後でも実行されます。また、コードをスキップし、結果をコンソールに出力して実行を開始します。
以下の例を参照してください。
import java.util.Scanner;
public class SimpleTesting {
public static void main(String[] args) {
double result = 0.0;
try {
Scanner sc = new Scanner(System.in);
System.out.println("Enter any two values");
int val1 = sc.nextInt();
int val2 = sc.nextInt();
result = val1 / val2;
} catch (Exception e) {
System.out.println("Exception occured " + e);
}
System.out.println("result " + result);
}
}
出力:
Enter any two values
30
0
Exception occured java.lang.ArithmeticException: / by zero
result 0.0