21.8.3 例外処理の動作
共通例外処理では,例外の検出された要因,および例外処理の指定有無によって,実行される処理が異なります。それぞれの場合の処理について,「表21‒13 手続き文で検出された例外」,「表21‒14 RAISE文によって引き起こされた例外」,および「表21‒15 例外の伝播によって検出された例外」に示します。
なお,TURN指令のチェックがONの場合の動作は,表の左から順にチェックされ,該当するものが実行されます。
例外の 致命度 |
TURN指令のチェックがOFF |
TURN指令のチェックがON |
|||
---|---|---|---|---|---|
該当する宣言手続きがある※1 |
PROPAGATE指令がON |
例外処理なし |
|||
呼び出し元が例外を受け取れないプログラム※2 |
左記以外 |
||||
致命的 |
実行時エラー または 実行を継続※3 |
該当する宣言手続きを実行したあと,エラーメッセージ(KCCC0015R-S)を出力し,実行単位が異常終了※4 |
エラーメッセージ(KCCC0403R-S)を出力し,実行単位が異常終了 |
例外を伝播 |
エラーメッセージ(KCCC0401R-S)を出力し,実行単位が異常終了 |
非致命的 |
実行を継続※5 |
該当する宣言手続きを実行し,次の文から実行を継続 |
実行を継続※5 |
実行を継続※5 |
実行を継続※5 |
例外の 致命度 |
該当する宣言手続きがある※1 |
PROPAGATE指令がON |
例外処理なし |
---|---|---|---|
致命的 |
該当する宣言手続きを実行したあと,エラーメッセージ(KCCC0015R-S)を出力し,実行単位が異常終了※2 |
例外を伝播 |
エラーメッセージ(KCCC0401R-S)を出力し,実行単位が異常終了 |
非致命的 |
該当する宣言手続きを実行し,RAISE文の次の文から実行を継続 |
RAISE文の次の文から実行を継続 |
RAISE文の次の文から実行を継続 |
例外の 致命度 |
TURN指令のチェックがOFF |
TURN指令のチェックがON |
||
---|---|---|---|---|
該当する宣言手続きがある※1 |
PROPAGATE指令がON |
例外処理なし |
||
致命的 |
エラーメッセージ(KCCC0402R-S)を出力し,実行単位が異常終了 |
該当する宣言手続きを実行したあと,エラーメッセージ(KCCC0015R-S)を出力し,実行単位が異常終了※2 |
例外を伝播 |
エラーメッセージ(KCCC0401R-S)を出力し,実行単位が異常終了 |
非致命的※3 |
次の文から実行を継続※4 |
該当する宣言手続きを実行し,次の文から実行を継続※4 |
次の文から実行を継続※4 |
次の文から実行を継続※4 |