Javaチェーン異常

12303 ワード

Javaチェーン異常
jdk 1.4開始
チェーン異常により、異常に別の異常を関連付けることができます.2番目のフィールドは、1番目の異常の原因(現在の異常の原因を記述する異常)を記述する.
eg:ある方法がゼロを除去しようとしてarithmetiException異常を投げ出したと仮定し、問題が発生した実際の原因はゼロを除去する異常ではない.I/O異常です.このエラーにより、除数に不正な値が設定されます.
チェーン異常を使用してThrowableのコンストラクション関数に追加しました 
Throwable(Throwable causeExc)
Throwable(String msg,Throwable causeeXC)
1つ目の形式では、causeExcは現在の異常を引き起こす異常であり、causeExcは現在のシーンを引き起こす背後にある原因である.
第2の形態では、異常を引き起こすことを指定しながら、1つのフィールドの記述を指定することができる.
————————この2つのコンストラクション関数は,異常クラスのError Exception RuntimeExceptionクラスにも導入されている.
APIメソッド
Throwable getCuse()
Throwable initCause(Throwable causeExc)
explain:
getCause():現在の異常を引き起こす異常を返し、異常がなければnullを返します
InitCause(Throwable causeExc):causeExcと呼び出しの例外を関連付けます.各例外のinitCause()メソッドは1回しか呼び出せません
code:
 
   
  1. package javastudyforexception;
  2. /**
  3. * Created by D9ing on 16/7/8.
  4. *
  5. */
  6. public class ChainExcDemo {
  7.    /**
  8.     *
  9.     */
  10.    static void demoproc() throws NullPointerException {
  11.        NullPointerException nullPointerException = new NullPointerException("top layer");
  12.        //
  13.        nullPointerException.initCause(new ArithmeticException("cause"));
  14.        throw nullPointerException;
  15.    }
  16.    public static void main(String[] args) {
  17.        try {
  18.            demoproc();
  19.        } catch (NullPointerException e) {
  20.            System.out.println("caught" + e);
  21.            System.out.println("origin" + e.getCause());
  22.        }
  23.    }
  24. }