Javaの例外処理

I.はじめに異常

図の構造異常

Throwableのは、クラス、例外やエラーは、システムエラーが内部エラーまたはリソース枯渇の誤差があるので、このクラスを継承し、これはめったに発生しないが、またのRuntimeException(実行に分かれているエラー例外例外にスローされることを許可されていませんさ異常)とIOExceptionを(他の異常)、2つの例外ルールに分かれている:プログラム・エラーの一部として、このような間違った型変換、配列境界、ヌルポインタのこのタイプへのアクセス、およびIなど、例外のRuntimeException(実行時例外)が生じ/ Oその他の異常に属する異常によるエラーこのような問題を、
Javaで、エラー・クラスとクラスのRuntimeException例外はオフ(非チェック例外)と呼ばれる他のすべての例外がチェック呼ば(例外をチェック);チェック例外コンパイラは通過させないではないだろう、対処しなければ例外は、処理されなければならないされる
非チェック例外のコンパイル時何の問題、あなたは仮想アドレスこれらの問題に対処することはできませんが、問題は、実行時には通常、これらの異常です通常、配列境界ので、これらの問題へのアクセスはnullポインタ
例外をスローたThrowableをスローすることができ、これは、呼び出しの時点でのcatchハンドラでなければなりません。彼らはどのような特定の問題の最後に投げるの種類が分からないので、しかし、この設計法は、治療を標的にすることができない、うまく行うには

第二に、例外処理の二つの方法

2.1スロー

コンパイラに伝えるための一つの方法はどのような値に戻る必要はありませんが、また、それがスローされる可能性がありますので、あなたはおそらく、これらのチェック例外を投げることができるように、この方法は、ヘッダを反映しているから、コンパイラエラーは、この方法は、省の彼の最初のステートメントでなければなりませんが発生する可能性がありますどのような教えて;
違いはスローとスロー

  • スロー
    例外クラス名の後ろにメソッド宣言、
    カンマで区切られた複数の例外クラス名に話をすることができますが、
    例外が取引にメソッドの呼び出し元によってスローさを表すことは
    、異常の可能性を投げ、彼らがいないと述べましたこれらの例外が発生しなければなりません
  • スロー
    例外オブジェクト名を指定して、in vivoで使用
    のみ例外オブジェクト名を投げることができる
    例外がスローさを表すことは、in vivoで治療中の文は
    、例外がスローされます投げるそれがスローされた例外のいくつかの種類を実行する必要があります投げます
  • 例外注意をスロー:
    サブクラスは親クラスのメソッドをオーバーライドする場合、サブクラスのメソッドは、同じ例外または異常な親サブクラスをスローする必要があります。
    親クラスは複数の例外をスローした場合、サブクラスは親クラスをオーバーライドする場合、必ず同じ例外をスローか、彼は親クラスのサブクラスのサブセットであることができますは例外をスローすることはできません
    どのような種類のを親場合に例外をスローしません例外が発生したサブクラスのメソッドがある場合、そのサブクラスは、任意の例外をスローすることはできません、そして、サブクラスは唯一ではないスロー、試すことができます

例外処理では、これらの例外プロセスをキャプチャするが、それらの中で発生した例外に対処する方法がわからないだろう、誰か知っている必要があります。

2.2試してみる...キャッチ

  • してみてください....キャッチ治療プログラム

    それぞれの異常な書き込みください... catchを持っている..試みを書き、複数のキャッチ

   try{
               ...
          }
        catch(异常类名 变量名) {
                ...
              }
        catch(异常类名 变量名) {
               ...
            }

  • してみてください...仕方例外処理を:

    トライの内部で問題を識別すると、JVMは、その後、私たちは例外オブジェクトを生成するオブジェクトを支援し、異常と一致する内部例外をキャッチします。例外オブジェクトは、情報処理の異常型である場合にキャッチ内で実行されるであろう。jdk7.0後の新しい例外処理スキームの出現

             try{
                ...
             }
            catch(异常名1 | 异常名2 | ...  变量 ) {
                ...
           }

    このアプローチの利点は、コードがシンプルで、それはまた別の例外処理方法のため、この方法の明白な不足が同じであるが、例外の同じタイプの開発に遭遇した場合場合、およびそれを持っているということです処理方法は、あなたは、この例外処理方法を使用することができ、この機能は、サブクラス関係は、関係が異常と異常の2親クラスとサブクラスではないことを例外との間に存在するために使用されます。

  • finally節:

    finally節は、ハンドリング機構:、のtry-catchステートメントを実行した後、最終的には文が実行され、そこにトライセクションは、return文はのtry-catchステートメントを実行しても、実行されていないかどうかは、最終的には声明の中で実行されますシステムは、のtry-catchステートメントの終了コード、すなわちでSystem.exit(0)で行われ、最終的に実行されませんが、以下の文のすべての場合は、1つの状況は、例外です。

第三に、独自の例外クラス

プログラムでは、問題が時々発生した異常が説明することができず、標準クラスの数で処理され、今回は独自の例外クラス、カスタム例外クラス継承の例外を定義する、または例外のサブクラスを継承し、カスタムすることができます特定の例外クラスの例外処理動作を与えるために、一般的なカスタム例外クラスには2つのコンストラクタ、異常情報は、詳細な説明で構成されている引数なしのコンストラクタを有し、以下では、カスタム例外クラスでありますカスタム例外クラスを投げることができたときに、いくつかの珍しいがあったとき

おすすめ

転載: www.cnblogs.com/blackmlik/p/12077638.html