Java仮想マシン仕様(se8)クラスファイル形式(7)

4.7.5 Exceptionsプロパティ 

  Exceptions属性は可変長属性で、method_info(§4.6)構造の属性テーブルにあります。
  Exceptions属性は、メソッドがチェックする必要のある可能性のある例外を示します。method_info構造体には、最大で1つのExceptions属性を含めることができます。
  Exceptions属性の形式は次のとおりです。

コードをコピー
Exceptions_attribute { 
    u2 attribute_name_index; 
    u4 attribute_length; 
    u2 number_of_exceptions; 
    u2 exception_index_table [number_of_exceptions]; 
}
コードをコピー

 

Exceptions_attribute形式の項目の説明は次のとおりです
   。attribute_name_index
    attribute_name_index項目の値は、定数プールの有効なインデックスである必要があります。このインデックスの定数プールのメンバーは、文字列「Exceptions」を表すCONSTANT_Utf8_info(§4.4.7)構造体である必要があります。
  attribute_length
    attribute_length項目の値は、最初の6バイトを除く現在の属性の長さを示します。
  number_of_exceptions
    number_of_exceptionsアイテムの値は、exception_index_table []配列内のメンバーの数を示します。
  exception_index_table []
    exception_index_table []配列の各メンバーの値は、定数プールの有効なインデックスである必要があります。これらのインデックスの定数プールのメンバーはすべてCONSTANT_Class_info(§4.4.1)構造である必要があります。これは、このメソッドがスローするクラスのタイプを宣言していることを示しています。
  メソッドが例外をスローする場合は、次の3つの条件の少なくとも1つを満たす必要
    があります。スローされるのは、RuntimeExceptionまたはそのサブクラスのインスタンスです。
    スローされるインスタンスはErrorまたはそのサブクラスです。
    スローされるのは、exception_index_table []配列で宣言された例外クラスまたはサブクラスのインスタンスです。
  これらの要件はJava仮想マシンでは強制されず、コンパイル時にのみ強制されます。

おすすめ

転載: www.cnblogs.com/lfw421935678/p/12681473.html