未処理例外

未処理例外とは、最初に例外を受け取った呼び出しスタック項目に関連した例外 処理プログラムによって処理されなかった例外のことです。例外が未処理である時には、次のいずれかの処置が 取られます。

メッセージ・タイプがサイクル・メイン・プロシージャーに関連した 機能チェック (CPF9999) である場合には、RPG のデフォルトの処理プログラムは元の状態を説明する照会メッセージを出します。
  • D (ダンプ) または C (取り消し) オプションを選択した場合には、最初に 例外を受け取ったプロシージャーが終了し、機能チェックが呼び出し元にパーコレート されます。
  • R (再試行) または G (入力取得) オプションを選択した場合には、機能 チェックが処理され、例外処理が終了し、プロシージャーが *GETIN (G を選択 した場合) あるいは例外が起こった入出力操作 (R を選択した場合) で処理を 再開します。 例えば、レコードのロックのために読み取りが正常に行われなかった場合に は、読み取り操作が再試行されます。

他のタイプのメッセージの場合には、例外はプロシージャーの呼び出し元に対する呼び出しスタックにパーコレートされ ます。 そのプロシージャーは例外を提示され、それを処理できるようになります。 そのプロシージャーが例外を処理しない場合には、制御境界に達するまで、例 外が呼び出しスタックにパーコレートされ、制御境界に達すると、例外は 機能チェックに変換され、上記に説明したように例外処理がやり直されます。