Google検索エンジン

トップページ » Javaプログラミング講座(応用編) » 例外処理の種類と書き方


例外処理の種類と書き方

  • Javaではコンパイル時に発生するコンパイルエラーと、実行時に発生する実行時エラーがあります。 実行時に発生するエラーに対して、記述した処理を行わせたい場合に使われるのが例外処理です。 ここでは例外処理の仕組みと種類、例外クラス、そして例外処理の書き方について確認していきます。

    下記は実行時エラーとなるプログラムのサンプルです。 配列の要素が3つしかないのに4つ目の要素を参照しようとしている、明らかに間違っているプログラムですが、コンパイルは成功します。


    サンプルソースコード
    class sample {
    
        public static void main(String args[]) {
    
            int num[] = {10, 20, 30};
    
            System.out.println( num[0] );
            System.out.println( num[1] );
            System.out.println( num[2] );
            System.out.println( num[3] );
    
        }
    }
    

    上記のサンプルソースコードをコンパイルして実行すると「num[3]」を参照しようとしたときに「ArrayIndexOutOfBoundsException」が出力されます。 ArrayIndexOutOfBoundsExceptionは、不正なインデックスを使って配列がアクセスされたことを示すためにスローされます。 つまり、インデックスが負または、配列のサイズ以上の場合です。

    実行時エラーが発生する上記のソースコードに例外処理「try、catch、finally」文を記述したのが、下記のサンプルソースコードです。 下記のサンプルソースコードをコンパイルして、実行してみてください。 実行時エラーは発生しません。


    サンプルソースコード
    class sample {
    
        public static void main(String args[]) {
    
            int num[] = {10, 20, 30};
    
            try {
                 System.out.println( num[0] );
                 System.out.println( num[1] );
                 System.out.println( num[2] );
                 System.out.println( num[3] );
            } catch ( ArrayIndexOutOfBoundsException ex ) {
                 System.out.println( "例外処理1" );
                 System.out.println( ex );
            } catch ( Exception ex ) {
                 System.out.println( "例外処理2" );
                 System.out.println( ex );
            } finally {
                 System.out.println( "必ず実行" );
            }
        }
    }
    

    例外処理「try、catch、finally」文を記述することで、プログラムが最後まで実行されます。 finally節は、必須ではないので記述しなくても問題ありませんが、記述すると例外が発生するしないに関わらず、必ず実行されます。

    Javaでは例外もクラスとして定義されています。 例外クラス「Exception」とそのサブクラスは、通常のアプリケーションでキャッチされる可能性のある状態を示す Throwable の形式の 1 つです。 「java.lang.Exception」は例外の基本クラスで、Exceptionクラスを記述することで全ての例外をキャッチできます。 「try、catch」文を使用するときは、Exceptionのサブクラスから順に記述するようにします。

    ちなみにサンプルソースコードの修正方法は適切とはいえません。 ロジックを修正することで、例外が発生しないなら、そうするべきです。 サンプルソースコードの場合は、4つ目の要素を追加するか、4つ目の要素を参照しないように修正すれば良いわけです。 プログラムミスをカバーするために例外処理を記述してはいけません。

    例外クラスについては、JavaのAPI「java.lang.Exception」で確認できます。 例外クラスは多いので、無理に覚えずに例外が発生した時にAPIで調べればよいと思います。



Javaプログラミング講座(応用編)
書籍の紹介
  • プログラマが知るべき97のこと
    プログラマが知るべき97のこと
    発売:2010/12/18
    定価:1,995円
    著者:和田 卓人
    出版:オライリージャパン
    内容:世界中で活躍するプログラマによる97本のエッセイを収録した書籍です。プログラミングにおいてもっとも重要な事柄は何か、バージョン管理やテスティング、設計原則とコーディングテクニック、また腕を磨くための勉強法などについて、経験豊かなプログラマが自らの体験を踏まえて解説します。
  • Effective Java 第2版 (The Java Series)
    Effective Java
    発売:2008/11/27
    定価:3,780円
    著者:Joshua Bloch他
    出版:ピアソンエデュケーション
    内容:著者のGoogle, Sun Microsystemsにおけるソフトウェア開発で得た知識・経験をまとめています。Javaプログラミングをする全てのSE必読の書籍です。
  • プログラミング言語Java (The Java Series)
    プログラミング言語Java
    発売:2007/04
    定価:4,410円
    著者:ケン・アーノルド他
    出版:ピアソンエデュケーション
    内容:Javaの原典と呼べる本です。変数、コメント、定数、制御、クラス、配列、文字列、例外処理までわずか30ページで進むので、Javaを学習し始めたばかりの方には少し難しいかもしれません。厚さの割に価格も手ごろなので、Java使いなら本棚に置いておきたい本です。
  • なぜ、あなたはJavaでオブジェクト指向開発ができないのか―Javaの壁を克服する実践トレーニング
    なぜ、あなたはJavaでオブジェクト指向開発ができないのか
    発売:2004/12
    定価:2,289円
    著者:小森 裕介
    出版:技術評論社
    内容:Javaプログラミング言語習得において、新人プログラマーの最初の障害は「オブジェクト指向の壁」です。Javaのソフトウェア開発を中心に事業を発展させてきたSMG社の新人教育セミナーを加筆・書籍化したもので、大卒の新人に対して、ゼロからJava言語を教えてきた実績をフィードバックしています。