Javaのエラーと例外の違い
コンテンツ
「スロー可能」は、Javaのエラーおよび例外階層のルートとして機能します。 「エラー」は、プログラムのコードでは処理できない重大な状態です。 「例外」とは、プログラムのコードで処理できる例外的な状況です。エラーと例外の重要な違いは、 エラー システムリソースの不足が原因です。 例外 あなたのコードが原因です。比較チャートとともに、エラーと例外のその他の違いを調べてみましょう。
- 比較表
- 定義
- 主な違い
- 結論
比較表
比較の根拠 | エラー | 例外 |
---|---|---|
ベーシック | エラーは、システムリソースの不足が原因で発生します。 | コードが原因で例外が発生します。 |
回復 | エラーは回復不能です。 | 例外は回復可能です。 |
キーワード | プログラムコードでエラーを処理する方法はありません。 | 例外は、3つのキーワード「try」、「catch」、および「throw」を使用して処理されます。 |
結果 | エラーが検出されると、プログラムは異常終了します。 | 例外が検出されると、それに応じて「throw」および「catch」キーワードによってスローおよびキャッチされます。 |
タイプ | エラーは未チェックのタイプとして分類されます。 | 例外は、チェック済みまたは未チェックのタイプに分類されます。 |
パッケージ | Javaでは、エラーは「java.lang.Error」パッケージとして定義されます。 | Javaでは、例外は「java.lang.Exception」で定義されます。 |
例 | OutOfMemory、StackOverFlow。 | チェック済み例外:NoSuchMethod、ClassNotFound。 未チェックの例外:NullPointer、IndexOutOfBounds。 |
エラーの定義
“エラー」は、組み込みクラス「Throwable」のサブクラスです。エラーは、システムリソースの不足が原因で発生する重大な状態であり、プログラムのコードでは処理できません。エラーは作成、スロー、キャッチ、または返信できないため、いかなる手段でも回復できません。エラーは、通常プログラムで処理できない壊滅的な障害が原因で発生します。
コンパイラには発生に関する知識がないため、エラーは常にチェックされていないタイプです。エラーは常にランタイム環境で発生します。エラーは例の助けを借りて説明できます。プログラムにはスタックオーバーフロー、メモリ不足エラー、またはシステムクラッシュエラーがあります。この種のエラーはシステムに起因します。コードはそのようなエラーに対して責任を負いません。エラーが発生すると、プログラムが異常終了します。
例外の定義
「例外」は、組み込みクラス「Throwable」のサブクラスでもあります。例外は、ランタイム環境で発生する例外的な条件です。ほとんどの場合、例外はプログラムのコードが原因で発生しますが、例外は回復可能であるため、プログラム自体で例外を処理できます。例外は、3つのキーワード「try」、「catch」、「throw」を使用して処理されます。例外を記述する構文は次のとおりです。
try // //コードをここに記述} Catch(Exception type){//コードをここに記述}
上記のコードでは、tryブロックに記述されたコードは、例外を監視するコードです。 tryブロックで例外が発生した場合、「throw」キーワードを使用して例外がスローされます。スローされた例外は、上記のコードの「catch」ブロックでキャッチできます。 「例外タイプ」は、発生した例外のタイプです。
簡単な言葉で言えば、不適切なコードが原因で発生したミスは例外と呼ばれます。たとえば、要求されたクラスが見つからない場合、または要求されたメソッドが見つからない場合。これらの種類の例外は、プログラム内のコードによるものです。システムはこれらの種類の例外に対して責任を負いません。例外は「チェック済み」と「未チェック」に分類されます。未チェックの例外はランタイム時に発生するため、コンパイラの知識にはありませんが、コンパイラはコンパイル時にコンパイラに認識されているため、チェックされた例外に関する知識を持っています。
- エラーは、システムリソースが不足している場合にのみ発生しますが、コードに問題がある場合は例外が発生します。
- エラーを回復することはできませんが、例外は、例外を処理するコードを準備することで回復できます。
- エラーを処理することはできませんが、例外をスローするコードがtry and catchブロック内に記述されている場合、コードによって例外を処理できます。
- エラーが発生した場合、プログラムは異常終了します。一方、例外が発生した場合、プログラムは例外をスローし、try and catchブロックを使用して処理されます。
- エラーはチェックされていないタイプです。つまり、エラーはコンパイラの知識ではありませんが、例外はチェックされたものとチェックされていないものに分類されます。
- エラーはjava.lang.Errorパッケージで定義されますが、例外はjava.lang.Exceptionで定義されます。
結論:
例外は、プログラムのコーディングで行われたミスの結果であり、エラーはシステムの不適切な機能の結果です。