My Java環境
- Java11
try-catch-finally
-
try-catch-finally
の順で記載する。catch句
はなくてもOK。 -
try句
とfinally句
は1つずつしか記載できない。catch句
は複数書ける。 -
catch句
とfinally句
の両方にreturn文
を書いた場合の例↓
public class Test {
public static void main(String... args) {
System.out.println(getException());
}
private static String getException() {
try {
throw new Exception();
} catch (Exception e) {
return "catch!";
} finally {
return "finally!";
}
}
}
実行結果は
finally!
例外クラス
- 継承関係
Throwable
-> Error
-> Exception
-> RuntimeException
Error
- プログラムでは対処できない事象
- サブクラスに
StackOverFlow
などがある - エラーに分類されるには
Error
を継承していること -
try-catch
とthrows
は強制されない、書くことはできる
Exception
とRuntimeException
- プログラムが対処できる事象
Exception
- 検査例外
- 例外処理を記述したかをコンパイラが検査する
-
RuntimeException
とそのサブクラスを除く -
try-catch
しているか、throws
しているかどちらかを強制する
RuntimeException
- 非検査例外
- 例外処理を記述したかをコンパイラが検査しない
-
try-catch
とthrows
は強制されない、書くことはできる