NETJVM 

TRY (試行) 文

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

一般形式

構文規則

  1. 一意名-1 は、System.Exception (.NET COBOL) または java.lang.Throwable (JVM COBOL) のクラス (またはそのサブクラス) のオブジェクト参照でなければならない。

一般規則

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

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

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