例外処理


Javaで例外を処理する方法

Exceptionが発生する可能性があると仮定する方法problemMethod()
  • try-catch
  • tryブロックで問題のメソッドを呼び出し、catchブロックでエラーを処理します.
    空のブロックとしてではなくcatchブロックに例外処理文を作成することが望ましい.
    public void runMethod(){
    	try{
    		problemMethod();
    	}
    	catch(Exception e){
    		//예외 처리!
    	}
    }
  • try-catch-finally
  • 例外処理構文が完了するとfinallyブロックが実行されます.
    tryブロックにreturnがあっても動作します.
    public void runMethod(){
    	try{
    		problemMethod();
    		return;
    	}
    	catch(Exception e){
    		//예외 처리!
    	}
    	finally{
    		System.out.println("finally");		
    	}
    }
    //finally가 출력된다.
  • try - with - resources
  • tryブロックで使用されるリソースを受信するために使用される.
    リソースがcloseを必要とするオブジェクトである場合、例外が発生したときに自動的に返されます.
    public void runMethod(){
      try (BufferedReader br =
                     new BufferedReader(new FileReader(path))) {
    		return br.readLine();
      }catch{
    		//예외 처리!
    	}
    }
  • throw
  • 例外が意図的に発生した場合に使用します.
    public void runMethod(){
    	throw new RuntimeException("Runtime Exception!");
    }
  • throws
  • 呼び出しメソッドの例外処理の場所に移動します.
    public void runMethod() throws Exception{
    	problemMethod();
    }

    JAvaの異常階層


    ThrowableクラスにはErrorExceptionクラスがある.

    ExceptionとError

    Errorはシステムにおける問題であり、Exceptionは実装された論理における問題である.
    コンパイル時に発生するエラーをコンパイルエラー、実行時に発生するエラーを実行エラーと呼びます.
    実行時に発生したエラーのうち、論理内で発生したエラー(処理可能なエラー)を例外と呼び、システムレベルで発生したエラーではありません.

    RuntimeExceptionとは?


    RuntimeExceptionはUnchecked Exceptionです.RuntimeExceptionを除き、ExceptionはChecked Exceptionです.
    Checked Exceptionでは、明示的に例外処理を行う必要があります.

    カスタム例外の作成方法


    Exceptionクラスを継承してカスタム例外を作成できます.
    class MyException extends RuntimeException{
    	...
    }