6

1つの定義は次のようになります。

通常、RuntimeExceptions は、プログラムで防止できる例外です。

しかし、それはまだチェック例外の定義ではありません。チェック例外は「コンパイル時に処理できる例外」だと思っていました。それは正しいですか、それとももっと教えてもらえますか?

私もサイトでこれを読みましたが、引用を説明してもらえますか?

多くの人は、チェック例外 (つまり、明示的にキャッチまたは再スローする必要がある例外) はまったく使用すべきではないと言います。

Java: チェックされた例外とチェックされていない例外の説明

定義が何であるかを学ぶことはできますか?私はまた、やや予想外に読んだ:

NumberFormatException はチェックされていません`

NumberFormatExceptionしかし、コンパイル時に処理するので、チェックされていると思います。理解を助けてもらえますか?Java プログラミングを行ったことはありますが、独自の例外クラスを作成したことはありません。なぜそれが必要なのですか? ここに画像の説明を入力

アップデート

定義が与えられているのは、Sierra / Bates による SCJP の本です。

ここに画像の説明を入力

4

3 に答える 3

7

チェック済み例外は、またはjava.lang.Throwableのサブクラスではない (Throwable 自体を含む)のサブクラスとして定義されます。ご覧になったガイドラインは、実行時例外の意図を理解するのに役立つように設計されたガイドラインです。java.lang.Errorjava.lang.RuntimeException

Java 言語仕様のセクション 11.1.1 を参照してください。

未チェックの例外クラスは、実行時例外クラスとエラー クラスです。

チェックされた例外クラスは、チェックされていない例外クラス以外のすべての例外クラスです。つまり、チェックされる例外クラスは、RuntimeException とそのサブクラスおよび Error とそのサブクラスを除くすべての Throwable のサブクラスです。

于 2013-04-21T14:13:32.580 に答える
3

より広い定義は次のとおりです。

CheckedExceptions は、明示的に処理する必要がある例外です。あなたはそれを投げることができると宣言するか、それを捕まえて対処する必要があります。カニンガムウィキ

その結果、RuntimeExceptions はチェックされませんが、メソッドがそれをスローすると宣言し、キャッチまたは再スローを強制される場合、NumberFormatException はチェックされます。

于 2013-04-21T14:22:59.583 に答える
2

チェック例外を使用すると、コンパイル時に、例外を処理しているか、スローするように宣言しているかを確認できます。

チェック例外を避けることを提案する人もいます。ただし、例外を管理するコストがなくなるわけではありません。コンパイル時から実行時、デバッグ時まで、シフトして拡大します。

Javaチュートリアルから:

[プログラマーは、未チェックの例外のみをスローするコードを作成したり、すべての例外サブクラスを RuntimeException から継承させたりしたくなるかもしれません。これらのショートカットは両方とも、プログラマーがコンパイラ エラーに煩わされることなく、また例外の指定やキャッチに煩わされることなく、コードを記述できるようにします。これはプログラマーにとっては便利に思えるかもしれませんが、キャッチまたは指定要件の意図を回避し、クラスを使用する他のユーザーに問題を引き起こす可能性があります。

非チェック例外を使用すると、ほとんどどこでも発生する可能性がある例外をどこでも宣言する必要がなくなります。Javaチュートリアルから:

実行時例外はプログラムのどこでも発生する可能性があり、通常の例外では非常に多く発生する可能性があります。すべてのメソッド宣言に実行時例外を追加する必要があると、プログラムのわかりやすさが低下します。したがって、コンパイラは実行時例外をキャッチまたは指定する必要はありません (可能ですが)。

NumberFormatException は、このキャンプに該当するためチェックされません。多くのアプリケーションでは、数値形式の例外はほとんどどこでも発生する可能性があり、多数発生します。

于 2013-04-21T14:15:50.353 に答える