Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのランタイム例外(RuntimeException)とは?主な種類と対処法を解説

ランタイム例外(RuntimeException)とは

ランタイム例外(RuntimeException)は、Javaプログラミング言語における各種例外の親クラスであり、発生するとプログラムやアプリケーションがクラッシュ、あるいは異常終了する可能性のある例外群を指します。

チェック例外(検査例外)と異なり、ランタイム例外はコンパイル時のチェック対象外です。そのため、try-catchでの捕捉やthrows宣言が必須ではなく、実行時に初めて表面化することが少なくありません。

ランタイム例外は通常、プログラムが本来対処すべき外部要因ではなく、プログラマーのコーディングミスを示している点が大きな特徴です。「起こり得ないはずの状態」を表現する目的で使われることもあります。なお、メモリ不足のような重大な障害は、ランタイム例外ではなくエラー(Error)としてスローされる点に注意しましょう。

代表的なランタイム例外の種類

最も頻繁に見られるランタイム例外には、NullPointerExceptionArrayIndexOutOfBoundsExceptionIllegalArgumentException の3つがあります。このうち最初の2つは、Java仮想マシン(JVM)によって自動的にスローされます。

1. NullPointerException(ヌルポインタ例外)

null参照のオブジェクトに対して何らかの操作を実行したり、nullオブジェクトのメソッドを呼び出したりした際に、JVMがスローする例外です。この例外をcatchで握りつぶしても、それは問題を一時的に覆い隠すだけにすぎません。事前のnullチェックやOptionalクラスの活用など、そもそもnullを参照しない設計を心がけることが重要です。

2. ArrayIndexOutOfBoundsException(配列インデックス範囲外例外)

存在しない配列の要素へアクセスしようとした際に、Java実行環境(JRE)が自動的にスローする例外です。指定したインデックスが負の値、または配列のサイズ以上である場合に発生します。Javaの配列は0から始まるインデックスを採用しているため、最初の要素のインデックスは0、最後の要素は「サイズ − 1」、n番目の要素は「n − 1」になります。

3. IllegalArgumentException(不正な引数例外)

サーバー側の参照接続上にあるメソッドに対して、無効なパラメータ(引数)が渡された場合に発生する例外です。メソッドが許容しない値を受け取ったことを示しており、呼び出し側で引数の妥当性を事前に確認する必要があります。

カスタムランタイム例外の作成例

以下は、RuntimeExceptionクラスを継承して独自のランタイム例外を定義し、それをスロー・捕捉するサンプルコードです。

public class MyExceptionTest {
    public void testRuntimeException() {
        throw new MyException();
    }
    public static void main(String[] args) {
        try {
            new MyExceptionTest().testRuntimeException();
        } catch(Exception e) {
            System.out.println(e.getClass().getName());
        }
    }
}
class MyException extends RuntimeException {
    public MyException() {
        super();
    }
}

実行結果

MyException

まとめ

ランタイム例外はコンパイラのチェックを受けないため、開発者自身が責任を持って防止する必要があります。nullチェックの徹底、配列の境界確認、引数のバリデーションなどを習慣化すれば、多くのランタイム例外は未然に防ぐことができます。

  1. UbuntuにJavaランタイムをインストールする完全ガイド|バージョン切替やOracle Javaの導入も解説

    UbuntuにはデフォルトでJavaがインストールされていません。しかし、MinecraftなどのJavaアプリケーションをパソコンで動かすには、Javaランタイムが必須です。この記事では、UbuntuにJavaランタイムをインストールする手順を、初心者の方にもわかりやすく丁寧に解説していきます。 Javaランタイムとは? Javaは「インタプリタ型」と呼ばれる種類の言語です。つまり、コードはあらかじめ実行可能な形式(実行ファイル)にコンパイルされません。Javaアプリケーションを実行するには、「ランタイム」と呼ばれる翻訳役が必要になります。このランタイムが、プログラムのコードをリアルタイ

  2. Javaの例外(Exception)とは?基本概念から例外処理の方法まで徹底解説

    Java開発者にとって、Javaの例外と例外処理に関する知識は必須です。 本チュートリアルでは、Javaプログラミングにおいてすべてのエンジニアが押さえておくべき基礎知識を解説します。まずは「Javaの例外とは何か」というところから始めましょう。 Javaの例外とは Javaプログラムは、実行中に何らかの問題に遭遇し、突如として強制終了することがあります。このような問題を例外(Exception)と呼びます。 優れたプログラマーは、実行時に発生し得るエラーを予測し、例外が起きた場合でもプログラムが別の経路で動作を継続できるように設計します。このような実践が例外処理(Exception Hand