JavaSilverでメモしたところ備忘録として残しておこうと思います。
例外とは
- 実行中のプログラムを停止して異常終了すること、呼び出し先のメソッドでエラーが起こった時に使う
throw文
- 例外を投げる(呼び出し先のメソッドに入る)
try-catch-finally
- tryとは例外のある可能性の処理に入る(呼び出し元のメソッドでつくる)、例外が発生時にしてほしくない処理も書く
- catch(Exeption e)とは例外に対応する処理(呼び出し元のメソッドで作る)
- finally(必ず動作)とは発生した例外が()内の例外型だったときにのみcatchブロックが実行される、逆に()内の型でなければtryブロックの中の処理が呼ばれる
try{
例外が発生しうる処理(throw文とか);
}catch(例外のクラス名(例外型) e){
例外発生時の処理(例外型が一致したときのみ);
}finally{
例外発生の有無にかかわらず必ず動作する記述;
}
Errorクラス
- 重大な問題、異常な状態、実行上のトラブルなど
VirtualMachinError
- JVNが壊れている、必要なメモリがない
OutOfMemory
- whileやfor文などの無限ループではいずれメモリ不足になり
OutOfeMemoryError
が発生し例外処理をしないErrorクラス群に入るものなので実行時に例外がスローされる。catchブロックではキャッチすることができない
Error群はプログラム上で対処のしようがない回復不可能な例外
Exetentionクラス
IOExeption
- 入出力の失敗
TimeOutExeption
- タイムアウトエラー
Exeptionクラス群は回復可能な例外になるので例外処理を記述する必要がある
RuntimeExeption[非チェック例外]
NullPointExeption
- nullが設定された変数でメソッドの呼び出しを行うとヌルポが発生する。System.out.println(null)であれば"null"が表示される
ValueOfとtoStringはどちらも数値を文字列に変換するメソッドであるがValueOfメソッドの場合はnullが変数に格納されていた場合は"null"を返すが、とStringはヌルポが発生する。
IndexOutOfBounds
ある種のインデックス(配列・文字列・ベクトル)が範囲外であることを示すためにスローされる
-
List,ArrayList
などに対して不正なインデックスを使ってアクセスしたときに発生する例外
ArrayIndexOutOfBounds
不正なインデックス(配列番号)を使って配列がアクセスされたことを示すためにスローされる。配列が負の数または配列のサイズ以上
-
配列
に対して不正なインデックスを使ってアクセスしたときに発生する例外
RuntimeExeptionクラス群は回復可能な例外ではあるが例外処理の記述は必須でない。