try-catch-finally
try {
// 例外が発生する可能性のある処理
} catch (例外名 変数名) {
// 例外発生時の処理
} finally {
// 必ず実行される処理
}
Throwable
├─ Error
└─ Exception
├─ RuntimeException
└─ (その他)
Throwable:例外の最上位Error:致命的(原則捕捉しない)Exception:アプリで扱う例外
RuntimeException:実行時例外IOException, SQLExceptionNullPointerException, IllegalArgumentExceptiontry {
処理;
} catch (IOException e) {
処理A;
} catch (Exception e) {
処理B;
}
catch (IOException | SQLException e) {
処理;
}
void f() throws IOException {
処理;
}
throws:このメソッドは例外を投げる可能性がある、という宣言throw new IllegalArgumentException("message");
throw:例外オブジェクトを明示的に発生させるclass MyException extends Exception {
MyException(String msg) {
super(msg);
}
}
RuntimeExceptionを継承する設計が多いtry (Resource r = new Resource()) {
処理;
}
close()される構文AutoClosableを実装したクラスが対象finallyが不要