Java例外の処理


Java例外の処理


Javaでは、エラーによりThrowableクラスが継承されたExceptionクラスとErrorクラスに分類されます.エラー発生時には実行時にエラーが投げ出されますが、Exception(例外)はtry-catchで制御できます.
try{
    throw new Exception("의도된 예외");
}catch(Exception e){
    e.printStackTrace();	// 예외가 발생한 콜스택 정보 출력
    System.out.println(e.getMessage());	    // 예외 이름 출력
}
tryで例外が発生した場合、catchブロックは一致する例外を検索します.照合例外がない場合は、実行時にエラーが発生します.照合エラーがある場合は、プロセスを終了することなく、対応するcatchブロックで例外を処理します.

Multi Catch Exception


1つのcatchブロックで複数の例外を処理するには、例外を「|」にマージします.ただし、継承関係のエラーは一緒に使用できません.相互に関係のない例外の間でのみ使用できます.

try{
    if(n%2 == 0 ){
          System.out.println(1/0);
    }
    else{
          throw new NullPointerException();
    }
}catch (ArithmeticException | NullPointerException e){
    e.printStackTrace();
}

Method Exception - Throws


Java異常処理がうんざりする原因.メソッドでthrowsを使用して例外を宣言すると、そのメソッドを使用する場所で例外処理が強制されます.例外処理を行わないとコンパイル時に切り取られるので、例外処理が必要です.
public void method1(){
   try{
       method2();
   }catch (Exception e){
        System.out.println(e.getMessage() + " : 에러처리를 method1에서 완료");
    }
}

public void method2() throws Exception{
    throw new Exception("에러처리를 method1에 위임");
}
異常を投げ出すthrowと、異常が発生する可能性があることを通知するthrowsを区別しなければならない.

接続の例外


例外が発生した場合は、親例外の原因として指定し、渡すことができます.たとえば、インストール中に「仮想例外」(SpaceException)と「メモリException」が発生した場合、それらを「Exceptionのインストール」として処理する場合は、それらを接続できます.
Exception.InitCause()を使用して、例外の原因を指定できます.
public void install() throws Exception{
    try{
        throw new SpaceException("의도된 예외");
    }catch (SpaceException | MemoryException ex){
        InstallException e = new InstallException();
        e.initCause(ex);
        throw e;
    }
}

public void installFile(){
     try{
        install();
     }catch (Exception e){
        e.printStackTrace();
    }
}
Reference
ジャワの晶石、南宮城沢