📝

【Java】例外についてちょっとまとめた

2022/07/22に公開

はじめに

Java Silverの受験にあたって、勉強したことをまとめました。
試験にはもう合格したけど、ずっと下書きに入ってたので公開します…😂

不具合の種類

プログラムを書いてコンパイルしようとするとき、3つの不具合があります。

1.文法エラー

文法の誤りで、コンパイルに失敗する
例:セミコロン忘れ、変数名の間違いなど(VSCodeで赤くなる部分!)

2.実行時エラー

コンパイルは成功したけど、実行中にエラーが出て強制終了する
例:配列の範囲外の要素へのアクセス、0除算など(実行するまで分からない)

3.論理エラー

文法に問題なく、強制終了もしないけど、結果が期待と異なる
例:数字を足すプログラムを作ったのに、結果が文字列の連結になってしまった!

例外の種類

1.Error系例外

  • OutOfMemoryErrorStackOverflowErrorなど
  • 回復の見込みがない致命的な状況
  • catchする必要はない、というかcatchしたところで何もできない😌

👇 クラスErrorの詳細
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/lang/Error.html

2-1.Exception系例外

  • クラスExceptionと、そのサブクラスのうちでRuntimeExceptionのサブクラスでないもの
  • 例外の発生を想定し、対処法を考えておく必要がある!
  • try-catchでキャッチしないとコンパイルエラー
    throwsで呼び出し元に例外を伝搬した場合は、キャッチしなくてOK

👇 クラスExceptionの詳細
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/lang/Exception.html

2-2.RuntimeException系例外

  • NullPointerExceptionArrayIndexOutOfBoundsExceptionなど
  • いちいち対処法を記述していたらキリがない!
    「そのくらいプログラマーがコード書くときに気をつけなさい!」的な例外
  • try-catchは強制されない

👇 クラスRuntimeExceptionの詳細
https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/lang/RuntimeException.html

まとめ

  • プログラムを書いてコンパイルしようとするとき、3つの不具合がある
  • そのうちの『実行時エラー』対策のため、例外処理を記述する
  • 例外にはチェック例外と非チェック例外があり、チェック例外は例外処理を記述しないとコンパイルエラーになる

参考

https://honto.jp/isbn/978-4-295-00780-7?partnerid=aftoc1904996260&booktype=ebook
図やイラスト付きで解説してくれるので、とっても分かりやすかったです!!😭✨

Discussion