“ぬるぽ”だけじゃない Javaで起きやすい主な「ランタイム例外」と原因は?:Javaのよくあるランタイムエラーの5大原因【第3回】
Javaには注意が必要なランタイム例外が幾つかある。アプリケーションを安定的に動作させるためには、こうしたランタイム例外をどう処理するかが重要だ。主なランタイム例外の種類と原因を解説する。
プログラミング言語および実行・開発環境「Java」で開発したアプリケーションの実行中に、不適切な動作をすると「ランタイムエラー」(実行時エラー)が発生する。事前に想定可能なランタイムエラーである「ランタイム例外」のうち、ソースコードのロジックの不備にまつわるランタイム例外を紹介する。
3.不適切なロジック
併せて読みたいお薦め記事
連載:Javaのよくあるランタイムエラーの5大原因
エラーへの対処法
- 脆弱性「Log4Shell」にこれで対処 攻撃を防ぐために知っておきたい措置
- 重大なバグの発生時、IT部門が腕前を発揮するためのノウハウとは?
- 「ポートは使用中です」「ポートは既に開かれています」のエラーが出る原因は?
ソースコードからアプリケーションを生成できても、そのアプリケーションが正しく動作するとは限らない。ソースコードには、アプリケーションのランタイム例外を引き起こす論理的な問題がしばしば潜んでいる。
Javaには、ランタイム例外のクラス(データと操作をまとめた「オブジェクト」の設計図)の親に当たるスーパークラスの「RuntimeException」がある。Java標準の開発キット(JDK)だけでなく、サードパーティー製ライブラリ(プログラム部品群)にも、RuntimeExceptionの仕様を継承したランタイム例外のクラスが存在する。こうしたクラスのうち、主要なクラスと、それぞれが担う例外を以下に示す。
- ArithmeticException
- 0での除算といった不正な算術処理の際の例外
- ClassCastException
- クラスの変換が不可能な際の例外
- ConcurrentModificationException
- オブジェクトの集合体「コレクション」に対する、整合の取れない同時処理の際の例外
- IndexOutOfBoundsException
- 配列(同種のデータの集合)内に存在しない要素へのアクセスの際の例外
- NullPointerException
- 「Nullオブジェクト」(存在しないオブジェクト)に対するメソッド(操作)の呼び出しの際の例外(「ぬるぽ」とも呼ぶ)
ランタイム例外が発生した場合の処理をソースコード内に記述することは、開発の必要条件ではない。とはいえ発生したランタイム例外を無視すると、アプリケーションが停止することになる。開発者は、アプリケーションが発し得るあらゆるランタイム例外に対して、アプリケーション全体を停止するのではなく、問題のあるスレッドのみを停止させるような例外処理を組み込むべきだ。
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.