throw

先ほどのthrowsとよく似たものにthrowがあります。
throwは明示的に例外オブジェクトを他に渡したいときに使います。
記述の仕方は throwの後に渡したい例外オブジェクトを記述します。
記述例は以下のようになります。

throwの記述例

    class Sample{
    public static void main(String args[]){
 try{
         obj();

     }catch(Exception e){         //obj()からパスされた例外をキャッチ      

   //例外処理

   }

 
    }

   static void obj() throws Exception{
        
      処理

      throw new Exception(); 
    }

}

では、サンプルプログラムで確認したいと思います。

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

class Sample98{
    public static void main(String args[]){
try{ obj(); }catch(Exception e){ System.out.println(e.getMessage()); } } static void obj() throws Exception{ throw new Exception("例外発生"); } }

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

Sponsored link

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

obj()メソッドは Exception例外がthrows宣言されているためパスされてきた例外を受け取るためtry catch文が定義されています。

obj()メソッド内では明示的に例外オブジェクトを呼び出し元へ渡すためにthrowを用いてオブジェクトの指定をしています。
これにより呼び出し元へ制御が移るとExceptionオブジェクトが渡されます。
呼び出し元ではこのオブジェクトをcatchしてその例外処理が行われます。
今回はコンストラクタの引数にエラーメッセージもいっしょに渡しています。

e.getMessage()で呼び出しています。

ではもうひとつプログラムを作成します。

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

class Sample98_1{

   public static void main(String args[]){

 try{
   obj();
 }catch(ArrayIndexOutOfBoundsException a){


 System.out.println(a.getMessage());
 }catch(Exception e){
  System.out.println(e.getMessage());

      }
  }

 static void obj() throws Exception{

    throw new ArrayIndexOutOfBoundsException
                              ("ArrayIndexOutOfBoundsException例外発生");
 
    }

}

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

Sponsored link

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

今回はcatch文を複数定義しました。
しかしobj()メソッドではArrayIndexOutOfBoundsExcepotion例外をスローしています。
従って呼び出し元へ制御が移ればArrayIndexOutOfBoundsException例外がcatchされます。

ページのトップへ戻る