21.5 例外の伝播
呼び出し先プログラムで検出された例外情報を,呼び出し元プログラムに伝える(以下,伝播という)ことができます。
あるプログラムで例外が引き起こされ,該当する宣言手続きがない場合,呼び出し元プログラムに例外を伝播できます。
例外の伝播の例を,次に示します。
-
プログラム「PARENTPROGRAM」中のCALL文で,プログラム「CHILDPROGRAM」を呼び出します。
-
プログラム「CHILDPROGRAM」中のDIVIDE文で,ゼロによる除算の例外が検出されます(例外名:EC-SIZE-ZERO-DIVIDE)。
-
PROPAGATE指令がONなので,呼び出し元のCALL文に例外が伝播します。
-
例外の伝播によってCALL文で例外が検出され(例外名:EC-SIZE-ZERO-DIVIDE),例外が引き起こされます。これによって,例外名EC-SIZEを指定したUSE手続きへ制御が移ります。
-
EC-SIZE-ZERO-DIVIDEは致命的な例外のため,例外宣言節の実行後,プログラムが異常終了します。
例外を伝播させる方法には,次の2種類があります。
-
PROPAGATE指令によって,例外を自動伝播させる
-
GOBACK文またはEXIT文のRAISING指定を使用して,明示的に呼び出し元へ例外を伝播させる