こんにちは!ISAMU(@burlesca_isa)です!
今回の対象読者は
- 例外処理について知りたい方
この記事を読むと
例外処理の構文を覚える前に知っておきたい知識
が分かります。
※この記事は前半と後半に分かれています。
例外とは?
プログラム実行時に発生したエラーを例外といいます。
プログラムはコンパイルに成功してもエラーが発生することがあり、
このような想定外の自体が発生した場合に対処するために例外処理を実装します。
3種類の不具合
Javaプログラムの不具合には3種類あります。
- 文法エラー(Syntax error)
- 実行時エラー(runtime error)
- 論理エラー(logic error)
詳しく説明していきます。
文法エラー(Syntax error)
文法の誤りで発生するエラーです。
代表的なものとして、セミコロンの付け忘れやカッコのとじ忘れなどがあります。
文法エラーがあるとコンパイルエラーとなります。
実行時エラー(runtime error)
プログラム実行時に異常事態が発生し、動作が継続できなくなった時に発生するエラーです。
文法は正しいのでコンパイルエラーにはなりません。
キャストでの不正な型変換や配列の範囲外要素へのアクセスなどで起こります。
論理エラー(logic error)
プログラムの実行結果が想定していた内容と異なっていた場合のエラーです。
文法は正しく、強制終了にもなりません。
実行時エラーに例外処理を記載する
実行時エラーにエラーが発生したときの処理を記載する必要があります。
実行時エラーは想定外のことで起きるエラーです。
- メモリの容量不足
- nullが格納されている変数を使用した場合
- キャストでの不正な型変換
- 開くファイルが見つからない
などです。
プログラムを作成する際にif文で「nullの場合」などを一つずつ記載していくのは現実的ではないため、
指定範囲内で実行時エラーが発生した場合には例外処理を実行するというようにします。
文法エラーと論理エラーはプログラムを修正する。
文法エラーはコンパイルエラーになるので気づきやすいエラーです。
論理エラーはプログラムの論理の間違いです。
これらのエラーはプログラム自体を修正します。
例外の種類
例外の種類は下記があります。
- Error系例外
- Exception例外
- RuntimeException例外
これらはクラスとして利用します。
このクラスを利用して例外処理を記述しますが、
この中で特に重要なクラスがException例外クラスです。
Error系例外クラス
回復の見込みがない致命的な状況を表します。
メモリ不足やファイルが壊れている場合などのことを指しますが、
対策しようがないため、例外処理は記述しません。
Exception例外クラス
例外処理でエラーが起きた場合の対処を考える必要があるクラスです。
Exception例外は引き起こすクラスが決まっていて、
対策が記述しなければJVMによってコンパイルエラーになります。
例えば、
ファイルの読み書きを行うクラスやネットワークに接続するクラスなどを利用する場合、
例外処理が記述されていないとエラーになります。
RuntimeException例外クラス
必ず想定すべきではない例外のクラスです。
Nullや配列などは想定しても切りがありませんが、
対策したい場合も少なからず存在します。
その際に使用するクラスです。