NETJVM 

TRY 文

TRY...CATCH...FINALLY...END-TRY 構造は、構造化例外処理の基礎となる。TRY ブロックを使用すると、その実行時に発生する可能性のある例外についてコードのセクションをテストできる。CATCH ブロックでは、TRY ブロックの実行時に例外が発生した場合に処理する例外のタイプを指定する。FINALLY ブロックを使用すると、例外が発生するかどうかにかかわらず、TRY ブロックの後のコードのセクションを実行できる。

一般形式

構文規則

  1. identifier-1 は、System.Exception (.NET COBOL) または java.lang.Throwable (JVM COBOL) のクラス (またはそのサブクラス) のオブジェクト参照とする。

一般規則

  1. identifier-1 を省略した場合、特殊レジスタ EXCEPTION-OBJECT を identifier-1 として指定した場合と同等になる。EXCEPTION-OBJECT は、クラス System.Exception (.NET COBOL) または java.lang.Throwable (JVM COBOL) を持つ。
  2. imperative-statement-1 の実行中に例外が発生した場合、各 CATCH 指定は、指定された順序で検査される。これは、スローされた例外のクラスが identifier-1 のクラスと等しい、または identifier-1 のクラスから派生するものが見つかるまで行われる。そのような identifier-1 が見つかった場合、identifier-1 はスローされた例外の値を含むように設定され、関連する imperative-statement-2 が実行される。imperative-statement-2 で指定した各文の規則に従って、実行が継続される。制御を明示的に移す制御分岐または条件文を実行すると、その文の規則に従って制御が移る。それ以外の場合は、imperative-statement-2 の実行が完了すると、制御は imperative-statement-3 (指定した場合) または TRY 文の最後に移る。
  3. imperative-statement-1 の実行中に例外が発生しない場合は、imperative-statement-1 で指定した各文に関する規則に従って処理が継続する。制御を明示的に移す制御分岐または条件文を実行すると、その文の規則に従って制御が移る。それ以外の場合は、imperative-statement-1 の実行が完了すると、制御は imperative-statement-3 (指定した場合) または TRY 文の最後に移る。
  4. imperative-statement-3 の実行は、imperative-statement-3 で指定された各文の規則に従って継続する。制御を明示的に移す制御分岐または条件文を実行すると、その文の規則に従って制御が移る。それ以外の場合には、imperative-statement-3 の実行が完了すると、TRY 文の最後に制御が移る。

次に、EXCEPTION-OBJECT レジスタの指定例を示す。

try set str to "some string" catch display exception-object::ToString() finally end-try