通常、いずれかのクラスが拡張Exception
されると、チェック例外になります。Runtime exception
例外も拡張します。では、どうunchecked exception
ですか?
この特別な場合のために、コンパイラにカスタムチェックインがあるようですか?
編集:私はチェックされたv /sのチェックされていない例外とそれらの長所と長所など について適切な考えを持っています。私は答えのそれらの間の違いを受け入れません。
通常、いずれかのクラスが拡張Exception
されると、チェック例外になります。Runtime exception
例外も拡張します。では、どうunchecked exception
ですか?
この特別な場合のために、コンパイラにカスタムチェックインがあるようですか?
編集:私はチェックされたv /sのチェックされていない例外とそれらの長所と長所など について適切な考えを持っています。私は答えのそれらの間の違いを受け入れません。
仕様のセクション 11.1.1に明示的に記載されています。
RuntimeException
そしてそのすべてのサブクラスは、まとめてランタイム例外クラスです。未チェックの例外クラスは、実行時例外クラスとエラー クラスです。
チェックされた例外クラスは、チェックされていない例外クラス以外のすべての例外クラスです。つまり、チェックされる例外クラスは、RuntimeException とそのサブクラスおよび Error とそのサブクラスを除くすべての Throwable のサブクラスです。
そうです、コンパイラは間違いなく について知っていRuntimeException
ます。
はい。Anyは、 、、および (直接または間接の) サブクラスThrowable
を除いて、チェック済み例外です。Error
RuntimeException
ただし、これらはJVM ではなくコンパイラによってチェックされます。チェック例外はコンパイル時の機能であり、実行時の機能ではありません。(更新:そして、「JVM」ではなく「コンパイラ」を指定するように質問を編集したことがわかりました。☺)
もう少し詳しく説明します。. . 「チェック例外」インターフェースがあったわけではありません。RuntimeException
ロジックは単純にハードコーディングされています。「またはのサブタイプでない限り、すべての例外クラスはチェック例外Error
です。
ここに便利なリンクがあります: http://www.javapractices.com/topic/TopicAction.do?Id=129
チェックされていないものとチェックされているものの違いを説明し、いくつかの例を示します。
「やや紛らわしいですが、RuntimeException (未チェック) 自体が Exception (チェック済み) のサブクラスであることにも注意してください。」