例外の処理、try-catch文フロー


>try-catch文

try {
	// 예외가 발생할 가능성이 있는 문장 넣기
} catch (Exception1 e1) {
	// Exception1이 발생했을 경우, 이를 처리하기 위한 문장
} catch (Exception2 e2) {
	// Exception2이 발생했을 경우, 이를 처리하기 위한 문장
}
  • の例外が発生した場合、例外を処理するcatch blockが検索されます.
  • のcatch blockに一致しない場合、異常処理は行われません.
  • Exceptionが宣言したcatch blockは、すべての例外処理が行われているため、最後のcatch blockです.
  • なお、try blockやcatch blockに1つの文しかない場合でも、省略することはできません.

    >printStackTrace()とgetMessage()


    例外が発生した場合、printStackTrace()とgetMessage()を含む例外オブジェクトが作成されます.
  • printStackTrace():例外発生時にスタック内のメソッドを呼び出す情報と例外メッセージを画面に出力します.
  • getMessage():発生した例外クラスインスタンスに格納されたメッセージを取得できます.
  • >マルチcatchブロック

  • 同じ内容のcatch blockを組み合わせたもの(JDK 1.7から
  • まで)
    try {
    	...
    } catch (ExceptionA | ExceptionB e) {
    	e.printStackTrace();
    }
    これにより、printStackTrace()の内容が同じになると、重複を解消することができる.
    このときの参照変数eは、ExceptionAとExceptionBの共通メンバーのみで使用できます.それぞれ独自の方法は参照できません.
    注意しなければならないのは、
    ExceptionAとExceptionBが親子関係の場合は許されません.
    この場合、親Exception Aのみを使用しても親子に適用されます.

    >例外の原因

    Exception e = new Exception("예외를 발생시켜보자!");
    
    throw e;
  • 例外を生成するには、演算子newを使用して、生成する例外クラスのオブジェクトを作成します.
  • キーワードthrowを使用して異常が発生しました.
  • ちなみに、上の2行を1行と略すことができます.
    throw new Exception("예외를 발생시켜보자!");
    このように書くこともできます

    >checked異常、unchecked異常

  • checked異常:コンパイラは異常があるかどうかを検査する(異常処理が必要)
  • 未検査異常:コンパイラ未検査異常(選択異常処理)

  • checked異常は、Exceptionクラスとそのサブクラスを表します.
    unchecked例外はRuntimeExceptionクラスとそのサブクラスです.
    したがって、throw new Exception();try-catchがない場合、コンパイルエラーが発生します.throw new runtimeException()try-catchがなくてもコンパイルエラーは発生しません.ただし、実行中にエラーが発生します.