📝
【Java】例外についてちょっとまとめた
はじめに
Java Silverの受験にあたって、勉強したことをまとめました。
試験にはもう合格したけど、ずっと下書きに入ってたので公開します…😂
不具合の種類
プログラムを書いてコンパイルしようとするとき、3つの不具合があります。
1.文法エラー
文法の誤りで、コンパイルに失敗する
例:セミコロン忘れ、変数名の間違いなど(VSCodeで赤くなる部分!)
2.実行時エラー
コンパイルは成功したけど、実行中にエラーが出て強制終了する
例:配列の範囲外の要素へのアクセス、0除算など(実行するまで分からない)
3.論理エラー
文法に問題なく、強制終了もしないけど、結果が期待と異なる
例:数字を足すプログラムを作ったのに、結果が文字列の連結になってしまった!
例外の種類
1.Error系例外
-
OutOfMemoryError
、StackOverflowError
など - 回復の見込みがない致命的な状況
- catchする必要はない、というかcatchしたところで何もできない😌
👇 クラスErrorの詳細
2-1.Exception系例外
- クラスExceptionと、そのサブクラスのうちでRuntimeExceptionのサブクラスでないもの
- 例外の発生を想定し、対処法を考えておく必要がある!
-
try-catch
でキャッチしないとコンパイルエラー
※throws
で呼び出し元に例外を伝搬した場合は、キャッチしなくてOK
👇 クラスExceptionの詳細
2-2.RuntimeException系例外
-
NullPointerException
、ArrayIndexOutOfBoundsException
など - いちいち対処法を記述していたらキリがない!
「そのくらいプログラマーがコード書くときに気をつけなさい!」的な例外 try-catch
は強制されない
👇 クラスRuntimeExceptionの詳細
まとめ
- プログラムを書いてコンパイルしようとするとき、3つの不具合がある
- そのうちの『実行時エラー』対策のため、例外処理を記述する
- 例外にはチェック例外と非チェック例外があり、チェック例外は例外処理を記述しないとコンパイルエラーになる
参考
図やイラスト付きで解説してくれるので、とっても分かりやすかったです!!😭✨
Discussion