0

JVM exceptions非チェック例外であり、チェック例外であると言えProgrammatic exceptionsますか? 実行時にJVM例外がスローされるように見えるため、チェックできませんでした...

ありがとう

4

3 に答える 3

3

あなたが求めていることに関係する2つの別々の区別があるかもしれません。JVMランタイムによってスローされる例外はから拡張されますがError、プログラムによる例外はから拡張されExceptionます。チェックされていないプログラム上の例外は、から拡張されRuntimeExceptionます。したがって、チェックされていない例外には2つの異なるクラス階層があります。JVM /プログラムによる区別は慣例にすぎないことに注意してください。実際、Javaコードから必要な例外クラスをスローできます。

また、JVM例外とJDK例外(標準のJavaライブラリによってスローされる例外)を区別してください。JVM例外はチェックされませんが、多くのJDK例外がチェックされます。

チェックされた/チェックされていない区別に関しては、コンパイラは、メソッドが明示的にスローする可能性のあるすべてのチェックされた例外を、またはそれらをスローする可能性のあるメソッドを呼び出すことによって、事前に宣言するように強制します。チェックされていない例外については、そのようなチェックは行われません。

于 2012-10-21T14:41:04.703 に答える
1

JVM例外はチェックされていない例外であり、プログラムによる例外はチェックされている例外であると言えますか?

まず、「JVM例外」は標準的な用語ではありません。(そして、SCJP6がJVMによってスローされる例外について話しているという事実は、用語を正しくしません。引用したSCJP6テキストは、用語を定義する試みとしてではなく、説明的に単語を使用しています。)

あなたの質問に対する答えはいいえです。多くの「プログラムによる」例外はチェックされていません。たとえば、NumberFormatExceptionはオフになっています。

JVM例外が実行時にスローされるように見えるため、チェックできませんでした...

その論理も意味がありません。すべての例外は実行時にスローされます。これは、「チェック済み」と「チェックなし」の意味ではありません。チェックされた例外とチェックされていない例外の本当の違いは、チェックされた例外をキャッチするか、メソッドシグネチャで宣言する必要があることです。チェックされていない例外を使用すると、どちらも実行する必要はありません。

これで、JVM自体によってスローされるすべての例外がチェックされていないことが起こります。しかし、それは例外をトリガーする「イベント」の性質に関するものです。これらは通常、一部のJavaコードのバグ、または回復不能なJVM障害の結果です。これらは、アプリケーションが通常回復するようなものではないため、チェックを外すと、ソースコード内の不要な言い回し(またはさらに悪いこと)を回避できます。

于 2012-10-21T15:21:17.203 に答える
1

JVM 例外というと、おそらく Java VM によってスローされる例外を思い浮かべるでしょうが、プログラムによる例外は Java プログラマーのコードによってスローされる例外です。

Java VM によってスローされるほとんどの例外は、実際には Java VM の標準ライブラリ内の Java コードによってスローされます。この Java コードをダウンロードすると、プログラマーが Java プログラムを作成するのと同じ方法で、ライブラリーが例外をスローすることがわかります。標準的な Java プログラマーも、同じ方法で同じ例外をスローできます。

Java VM が Java エラーをスローすることもあります。エラーは例外ではありませんが、例外と同じ方法でスローおよびキャッチできます。VM のみがエラーをスローする必要があります。

于 2012-10-21T14:35:06.863 に答える