21.2.1 例外名
例外名とは,おのおのの例外に関連づけられた名前のことです。例えば,「0による除算」の例外は,例外名「EC-SIZE-ZERO-DIVIDE」として識別されます。
- 〈この項の構成〉
(2) 例外名の一覧
例外名の一覧を,次に示します。
例外名 |
致命度 |
説明 |
検出される文 |
---|---|---|---|
− |
すべての例外 |
− |
|
− |
引数エラー |
− |
|
致命的 |
関数で引数エラーが発生した |
組み込み関数を指定できる手続き文※1 |
|
致命的 |
組み込み関数の処理中にメモリ不足などのエラーが発生した |
組み込み関数を指定できる手続き文※1 |
|
− |
区域外 |
− |
|
致命的 |
OCCURS〜DEPENDING ONデータ項目が区域外である※2 |
OCCURS DEPENDING ON一意名に値を設定する手続き文※1 |
|
致命的 |
区域外の部分参照子である※3 |
部分参照を指定できる手続き文※1 |
|
致命的 |
区域外の添字である※4 |
添字を指定できる手続き文※1 |
|
− |
データ例外 |
− |
|
致命的 |
アドレス名によって参照されるデータ項目を参照するとき,アドレス名の設定値がNULLである |
アドレス名によって参照されるデータ項目を指定した手続き文※5 |
|
− |
実行制御フロー違反 |
− |
|
致命的 |
大域的な宣言手続き中でEXIT PROGRAM文が実行された |
EXIT文 |
|
致命的 |
大域的な宣言手続き中でGOBACK文が実行された |
|
|
致命的 |
ALTER文で行き先を指定する前に,行き先を省略したGO TO文が実行された |
GO TO文 |
|
致命的 |
RELEASE文がSORT文の範囲内にない |
RELEASE文 |
|
致命的 |
RETURN文がMERGE文やSORT文の範囲内にない |
RETURN文 |
|
致命的 |
USE文が別のUSE手続きを実行させた |
宣言手続き中で実行中の宣言手続きを実行する例外を引き起こした手続き文 |
|
− |
入出力例外 |
− |
|
非致命的 |
入出力状態「1x」が発生した |
READ文 |
|
非致命的 |
ページ終了条件が発生した |
WRITE文 |
|
非致命的 |
ページあふれ条件が発生した |
WRITE文 |
|
致命的 |
入出力状態「9x」が発生した(入出力状態の詳細は,「付録G 入出力状態の値」を参照) |
|
|
非致命的 |
入出力状態「2x」が発生した |
|
|
致命的 |
LINAGE句に指定したデータ名の値が要求範囲外である |
|
|
致命的 |
入出力状態「4x」が発生した |
|
|
致命的 |
入出力状態「3x」が発生した |
|
|
− |
オブジェクト指向に関連するすべての既定義例外 |
− |
|
致命的 |
オブジェクトビューに対する不成功が発生した |
オブジェクトビューを指定できる手続き文 |
|
致命的 |
例外オブジェクトが処理されなかった |
|
|
致命的 |
INVOKE文の一意名1に指定されたハンドルの値が正しくない |
INVOKE文 |
|
致命的 |
要求されるメソッドが使用できない |
INVOKE文 |
|
致命的 |
NULLオブジェクト参照を使用してメソッドを呼び起こそうとした |
INVOKE文 |
|
致命的 |
オブジェクトの作成や拡張に必要なシステム資源が不十分である |
INVOKE文 |
|
致命的 |
実行時の型チェックが失敗した |
INVOKE文 |
|
− |
けたあふれ条件 |
− |
|
非致命的 |
STRING文のけたあふれ条件が発生した |
STRING文 |
|
非致命的 |
UNSTRING文のけたあふれ条件が発生した |
UNSTRING文 |
|
− |
プログラム間連絡例外 |
− |
|
致命的 |
引数が不一致である |
CALL文 |
|
致命的 |
取り消されるプログラムが活性状態である |
CANCEL文 |
|
致命的 |
|
|
|
致命的 |
呼び出し先プログラムが見つからない |
CALL文 |
|
致命的 |
呼び出し先プログラムが活性状態である |
CALL文 |
|
致命的 |
呼び出し先プログラムで資源が使用できない |
|
|
− |
EXIT文RAISING指定かGOBACK文RAISING指定で発生する例外 |
− |
|
致命的 |
EXIT文RAISING指定かGOBACK文RAISING指定のEC-USER例外条件が手続き部見出しのRAISING指定にない |
|
|
− |
範囲例外 |
− |
|
致命的 |
INSPECT文での置き換え項目のサイズが異なる |
INSPECT文 |
|
非致命的 |
THROUGH範囲の開始値が終了値よりも大きい |
|
|
致命的 |
PERFORM文で変更項目の設定が負値である |
PERFORM文 |
|
非致命的 |
指標の初期値が範囲外のため,SEARCH文で表要素が見つからない |
SEARCH文 |
|
非致命的 |
探索基準に合致する要素がないため,SEARCH文で表要素が見つからない |
SEARCH文 |
|
− |
けたあふれ例外 |
− |
|
致命的 |
べき乗演算規則の違反が発生した |
COMPUTE文 |
|
致命的 |
計算でのけたあふれが発生した |
|
|
致命的 |
格納での有効けた切り捨てが発生した |
|
|
致命的 |
浮動小数点での下位けたあふれが発生した |
|
|
致命的 |
ゼロによる除算が発生した |
|
|
− |
整列併合機能の例外 |
− |
|
致命的 |
整列併合用ファイル記述項のRECORD句で指定したDEPENDING ONデータ名の値が数字ではない |
|
|
致命的 |
RELEASE文のレコードが長過ぎるまたは短過ぎる |
RELEASE文 |
|
致命的 |
RETURN文がファイル終了条件発生中に実行された |
RETURN文 |
|
− |
利用者定義の例外 |
− |
|
非致命的 |
レベル3の利用者定義の例外条件 |
|
- (凡例)
-
−:発生したレベル3の例外名の動作に従う
- 注※1
-
詳細は「21.8.1 例外が検出される文の詳細」を参照してください。
- 注※2
-
表操作で,DEPENDING ON指定のデータ名に格納されている繰り返し回数が,表の最小から最大の範囲にないことを示します。
- 注※3
-
部分参照の指定が,一意名の範囲内にないことを示します。
- 注※4
-
表操作で使用する添字または指標名が指す表要素が,表の範囲内にないことを示します。
- 注※5
-
ただし,連絡節中のデータ項目に対するポインタ変数がNULLである場合,例外が検出されません。
- (例)
-
連絡節中のデータ項目に対してSET文のADDRESS OFによってNULLを設定したあと,そのデータ項目を参照した場合は,例外が検出されません。
(3) 利用者定義例外名
利用者定義例外名とは,ユーザが独自の例外を定義して使用できる機能です。
利用者定義例外名は,「EC-USER-」で始まる任意の例外名を記述して定義します。利用者定義例外名の命名規則については,マニュアル「COBOL2002 言語 標準仕様編」 「10.5.11(1) 例外」を参照してください。
利用者定義例外名として,「EC-USER-EXCEPTION」という例外名を使用する場合のコーディング例を,次に示します。
IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. PROCEDURE DIVISION. DECLARATIVES. EXCEPTIONHANDLER SECTION. USE AFTER EXCEPTION CONDITION EC-USER-EXCEPTION. *> 1. DISPLAY 'EC-USER-EXCEPTION発生'. END DECLARATIVES. RAISE EXCEPTION EC-USER-EXCEPTION. *> 2. END PROGRAM SAMPLE.
-
例外宣言手続き部に利用者定義例外名「EC-USER-EXCEPTION」を定義します。
-
RAISE文にEC-USER-EXCEPTIONを指定して,利用者定義の例外を引き起こします。
RAISE文で例外を引き起こす場合,TURN指令のチェックをONにして例外チェックを有効にする必要はありません。
RAISE文については,「21.6 明示的な例外の引き起こし」を参照してください。