例外の基本

Javaプログラムにおいて発生するエラーの種類は2種類あります。

  1. コンパイルエラー・・・・・・・文法上のエラー(構文エラーなど)
  2. 例外・・・・・・・・・・・・・・・・・実行時に起こる予期しないエラー

今まで、たくさんのサンプルプログラムを作成してきました。
その中で一度はコンパイルしたときにエラーが出たことがあると思います。
今まで一度もエラーが出なかった人はいないと思います。

しかしコンパイル時に出るエラーとは別に実行時にエラーが出ることもあります。
これは、構文は正しいのですが結果が予期しない値になった場合などに起こりうる エラーでこれを例外といいます。

また、例外が発生することを例外がスローするといいます。
また、例外に対して、それを処理して可能ならばその状態から回復するなどの
処理を行うことを、例外をキャッチするといいます。

この例外をキャッチするオブジェクトをハンドラと呼び、ここで例外処理を行います。
主な例外は以下のようなものがあります。

代表的な例外

  1. 配列の存在しない要素数にアクセスしたとき
  2. 整数を0で割ったとき
  3. 存在しないファイルを開こうとしたとき
  4. 存在しない変数や配列を呼び出そうとした時

通常は例外が発生したらその時点でプログラムを終了します。
しかし前もって例外処理をしておくことで回避できます。
まずは、例外が発生するサンプルプログラムを見ていきます。

サンプルプログラム(Sample62.java)

class Sample62{
    public static void main(String args[]){

     int i[] = new int[3];
    
     i[4] = 5;
    System.out.println("i[4] は " + i[4]);

    }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行してみます。

最もわかりやすいプログラムと思います。
配列の要素数は int i[] = new int[3];なのに対してi[4] = 5;で要素数を超えて値を
代入しているから例外というエラーが出ます。

ちなみに白く塗られた部分のArrayIndexOutOfBoundsException というメッセージが例外の 種類になり、 ArrayIndexOutOfBoundsException という例外が起きたことを意味します。

では、上のSample62を例外処理をしていきたいと思います。

例外処理の基本

 try{

    例外が発生する可能性のある処理
   
    }catch(例外クラス  変数名){


   例外発生時の処理;

 }

サンプルプログラム(Sample62_1.java)

class Sample62_1{
    public static void main(String args[]){

   try{
        int i[] = new int[3];
        i[4] = 5;
         System.out.println("例外は発生しません");

    }catch(ArrayIndexOutOfBoundsException e){

          System.out.println("配列の要素数を超えています");
          System.out.println("例外が発生しました");
   }
 }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

36年の実績,利用企業6,000社,受講者総数200万人突破。
技術系の通信教育講座ならJTEX!
☆ゲーム用パソコンならドスパラ!☆


コンパイル・実行しています。

先ほどのSample62.javaの例外処理をしました。
このように例外が発生したらcatch文の中の処理が行われます。

では例外が発生しなかった場合のプログラムも見ていきます。

サンプルプログラム(Sample62_2.java)

class Sample62_2{
    public static void main(String args[]){
try{
       int i[] = new int[3];

        i[2] = 5;
         System.out.println("例外は発生しません"); 
    }catch(ArrayIndexOutOfBoundsException e){

          System.out.println("配列の要素数を超えています");
          System.out.println("例外が発生しました");
   }
    }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行します。

このように今度は i[2] = 5; は 配列の要素数に収まります。
したがって例外は発生しません。

例外が発生しないときはtry文の中の処理が行われます。

サンプルプログラム(Sample62_3.java)例外の情報を出力

class Sample62_3{
    public static void main(String args[]){
try{
        int i[] = new int[3];

        i[4] = 5;

         System.out.println("例外は発生しません");
    }catch(ArrayIndexOutOfBoundsException e){

          System.out.println("配列の要素数を超えています");
          System.out.println("例外" + e + "が発生しました");
   }
 }

}
 

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

普段は手軽に作品(写真・イラスト)を公開
とっておきの作品は、こだわりのレイアウトで。
- Petit Homepage Service -
大容量無制限レンタルサーバー【X2】利用者のみドメインが激安


コンパイル・実行してみます。

このようにcatchブロックで定義した変数 e で例外の情報を呼び出せます。

ページのトップへ戻る