java voidについて
メソッド等で戻り値(return)がないときに使う
java throwについて
例外を意図的に発生させる
java throwsについて
呼び出し元に例外処理を投げる
void testB () throws FileNotFoundException { //・・・①
FileReader r = new FileReader(“sample.txt”);
System.out.print(“ファイルを読み込みました”);
}
void testC () {
try {
testB(); //・・・②
} catch (FileNotFoundException e) { //・・・③
System.out.print(“ファイルが存在しませんでした”); //・・・④
}
}
上記コードの流れは①で前もってtestBメソッドでFileNotFoundException例外が発生したら呼び出し元にthrowsで例外処理を 投げるようにしておく。②でtestCメソッドの中でtestBメソッドを呼び出している。testBメソッドで例外が発生すると呼び出し元であるtestCに例外が投げられる。③のcatch文が例外をキャッチして④が実行される
java 様々な例外
IndexOutOfBoundsException=配列や文字列、コレクションの範囲外であることを表す例外 ←下記二つのスーパークラス
ArrayIndexOutOfBoundsException=配列の要素の外のアクセスを表す例外
StringIndexOutOfBoundsException=文字列の範囲外を表す例外
NullpPointerException=nullに対してメソッドを呼び出すコードを記述した場合に発生する例外
IllgalArgumentException=不正な引数を渡した場合に発生する例外(JVMではなくプログラムが任意にスローする)
IllgalStateException=オブジェクトを異常な状態のまま利用しようとしたときにスローされる例外
ClassCastException=継承関係や実現関係にないクラスにキャストしようとしたときにスローされる例外
StackOverflowError=スタック領域というメモリを利用してメソッドなどを実行するがスタック領域は有限なので同じメソッド を呼び出し続ける「再帰呼び出し」を行っているとスタック領域が足らなくなり、JVMがStackOverflowをスローしてプログラ ムが強制終了する
ExceptionInInitializerError=staticイニシャライザで何らかの例外が発生したときにJVMによってスローされるエラー
java try-with-resourceについて
構文:
try (closeによる後片付けが必要な変数の宣言) {
//例外が発生する可能性がある処理
} catch {
//例外が発生した時の処理
}
※finallyを記述しなくてもtryの後の()の部分を自動でcloseしてくれる
※宣言する変数名はAutoCloseableを実装している必要がある