GeeksforGeeks (日本語)

Javaでは、例外の二つのタイプがあります:

1)Checked:コンパイル時にチェックされる例外です。 メソッド内の一部のコードがチェック例外をスローする場合、メソッドは例外を処理するか、throwsキーワードを使用して例外を指定する必要があります。

たとえば、場所でファイルを開く次のJavaプログラムを考えてみましょう”C:\test\a.txt”そして、それの最初の三行を印刷します。, 関数main()はFileReader()を使用し、FileReader()はチェックされた例外FileNotFoundExceptionをスローするため、プログラムはコンパイルされません。 また、readLine()およびclose()メソッドを使用し、これらのメソッドもチェック例外IOExceptionをスローします



出力:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown at Main.main(Main.java:5)

上記のプログラムを修正するには、throwsを使用して例外のリストを指定する必要があるか、try-catchブロックを使用する必要があります。 以下のプログラムでthrowsを使用しました。, FileNotFoundExceptionはIOExceptionのサブクラスであるため、throwsリストでIOExceptionを指定して、上記のプログラムをコンパイラエラーのないものにすることができます。



出力:ファイルの最初の三行”C:\test\a.txt”

2)チェックされていない例外は、コンパイル時にチェックされていません。 C++では、すべての例外がチェックされていないため、コンパイラによって例外の処理または指定が強制されることはありません。 文明化され、例外を指定またはキャッチするのはプログラマ次第です。,
Javaでは、ErrorおよびRuntimeExceptionクラスの例外は非チェック例外であり、throwableの下の他のすべてがチェックされます。

 +-----------+ | Throwable | +-----------+ / \ / \ +-------+ +-----------+ | Error | | Exception | +-------+ +-----------+ / | \ / | \ \________/ \______/ \ +------------------+ unchecked checked | RuntimeException | +------------------+ / | | \ \_________________/ unchecked

次のJavaプログラムを考えてみましょう。 それは正常にコンパイルされますが、実行時にArithmeticExceptionをスローします。 ArithmeticExceptionは非チェック例外であるため、コンパイラはコンパイルを許可します。,2b7cfd03″>

;

int y = 10;
int z = y/x;
}
}



Output:

Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:5)Java Result: 1

Why two types?,
詳細は”非チェック例外—論争”を参照のこと。

例外をチェックまたはチェックしないようにする必要がありますか?
以下は、Javaドキュメントからの一番下の行です
クライアントが合理的に例外から回復することが期待できる場合は、それをチェック例外にします。 クライアントが例外から回復するために何もできない場合は、それを非チェック例外にします

GeeksforGeeksのJavaコーナー

間違ったものを見つけた場合、または上記のトピックについてのより多くの情報を共有したい場合は、コメントを書いてください。

注目リーダー! 今学習を停止しないでください。, 学生に優しい価格でJavaおよびJavaコレクションの基礎コースですべての重要なJava FoundationおよびCollectionsの概念を手に入れ、業界の準備ができているようになります。

記事タグ:

Java
練習タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ツールバーへスキップ