import java.util.InputMismatchException;
import java.util.Scanner;
public class DivisionProgram {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
// ユーザーに2つの整数を入力してもらう
System.out.print("最初の整数を入力してください: ");
int num1 = scanner.nextInt();
System.out.print("次の整数を入力してください: ");
int num2 = scanner.nextInt();
// 0で割り算をしようとした場合の例外処理
if (num2 == 0) {
throw new ArithmeticException("エラー: 0で割り算はできません。");
}
// 除算の結果を表示
double result = (double) num1 / num2;
System.out.println("除算の結果: " + result);
} catch (InputMismatchException e) {
// 整数以外の入力があった場合の例外処理
System.out.println("エラー: 整数以外の入力が検出されました。");
} catch (ArithmeticException e) {
// 0で割り算した場合の例外処理
System.out.println(e.getMessage());
} finally {
// Scannerのクローズ
scanner.close();
}
}
}
このプログラムでは、nextInt()
メソッドを使用して整数を入力し、ArithmeticException
や InputMismatchException
に対する例外処理を行っています。ユーザーが0で割り算をしようとするか、整数以外の入力をすると、それぞれの例外がキャッチされてエラーメッセージが表示されます。
複数の例外の処理
プログラム概要
このプログラムは、ユーザーに2つの整数を入力してもらい、それらの整数を除算して結果を表示します。ただし、以下の状況を考慮しています。
- ユーザーが0で割り算をしようとした場合は、
ArithmeticException
をスローし、エラーメッセージを表示してプログラムを終了します。 - ユーザーが整数以外の入力をした場合は、
InputMismatchException
をスローし、エラーメッセージを表示してプログラムを終了します。
プログラムのポイント
try
ブロック:- ユーザーからの入力や計算など、例外が発生する可能性があるコードを
try
ブロック内に配置します。
- ユーザーからの入力や計算など、例外が発生する可能性があるコードを
catch
ブロック:- 各種例外に対する処理を
catch
ブロックに記述します。 - 最初に
InputMismatchException
に対するcatch
ブロックがあり、整数以外の入力が検出された場合にエラーメッセージを表示します。 - 次に
ArithmeticException
に対するcatch
ブロックがあり、0で割り算が検出された場合にエラーメッセージを表示します。
- 各種例外に対する処理を
finally
ブロック:finally
ブロックでは、クリーンアップのための処理を記述します。- このプログラムでは、
Scanner
をクローズする処理がfinally
ブロックに配置されています。これにより、プログラムの実行が終了してもリソースが適切に解放されます。
throw
文:- 特定の条件が満たされた場合に、意図的に例外をスローするために
throw
文が使用されています。 - 例えば、0で割り算しようとした場合に
ArithmeticException
をスローします。
- 特定の条件が満たされた場合に、意図的に例外をスローするために
エラー処理の重要性
エラー処理は、プログラムの信頼性と安定性を向上させるために非常に重要です。適切なエラーメッセージを表示し、ユーザーに明確な情報を提供することで、問題が発生した場合でもプログラムを適切に終了させることができます。例外処理を通じて、プログラムが異常な状態に遭遇した場合にきちんと対処できるようにしましょう。