try
EGL の try 文は、try ブロックの開始部分にマークを付けます。
このブロックは end 区切り文字で終了します。
try 文は、try ブロック内の次のいずれか 1 つの文でエラーが発生しても、プログラムの実行を続けます。
- input/output (I/O) 文
- システム関数の呼び出し
- call 文
try 文により、コードに発生する可能性のあるすべての例外 (ファイルやレコードの終わりが見つからないなどの小さな例外から、 ハードの入出力エラーなどのより重大な問題まで) の結果に影響を与えることができます。例外が発生すると、例外タイプと一致する onException ブロックの最初の文で処理が再開されます。 onException ブロックは、明白な理由がなくても省略できます。 省略した場合、例外は try ブロックの終わりに続く最初の文で再開されます。
標準的な try ブロックには、次の 2 つの文グループが含まれています。
- エラー条件を処理する対象の文。これらは、try キーワードと最初の onException キーワードとの間にあります。 これらの文でエラーが発生しない場合、すべての onException ブロック中の文は無視されます。
- エラーが発生した場合に実行される文。 これらは、最初の onException キーワードと、初期の try キーワードに一致する end キーワードとの間にあります。
例外はエラーが発生した位置から上方に伝搬します。try 文が、 どんなに深くネストされていても、try ブロックから呼び出されたすべての関数内で生じた例外を処理できます。例外がスローされたら、最も近くに内包されている try ブロックがコントロールを得ます。 onException ブロックに一致する例外が見つからない場合、次にレベルの高い内包されている try ブロックがコントロールを受け取ります。 それ以上 try ブロックが見つからない場合、次の実行可能ステートメントがコントロールを受け取ります。
例外処理のプロセスについて詳しくは、例外処理を参照してください。
構文

- statement
- EGL 文。
- exceptionRecordVariable
- 例外ステレオタイプを持つレコードの宣言 (『例外ステレオタイプ』を参照してください)。 このレコード変数は、レコード・タイプが例外のレコード・タイプと一致する場合に、その例外の messageID と message、および可能な追加フィールドを保持します。
互換性
| プラットフォーム | 問題 |
|---|---|
| DL/I データベース・アクセス | dliVar.handleHardDLIErrors または vgVar.handlHardIOErrors のいずれかが 1 に設定されている場合は、DL/I セグメントに対する try ブロック内でハードの入出力エラーが発生しても、プログラムは実行を続けます。両方のシステム変数が 0 に設定されているか、try ブロックがない場合は、DL/I セグメントに対するハードの入出力エラーが発生すると、プログラムは終了します。dliVar.handleHardDLIErrors は、IMS™ メッセージ・キューまたは GSAM ファイルに関連付けられているシリアル・レコードには影響を与えません。 |
| V60 の例外互換性 |
|
| VisualAge® Generator 互換モード | vgVar.handlHardIOErrors が 1 に設定されている場合、データベースの try ブロックまたはファイル入出力でハードウェア入出力エラーが発生したときにプログラムは実行し続けます。vgVar.handlHardIOErrors が 0 に設定されているか、try ブロックがない場合は、データベース入出力またはファイル入出力に対するハードウェア入出力エラーが発生すると、プログラムは終了します。vgVar.handleHardIOErrors のデフォルトは 1 ですが、handleHardIOErrors プログラム・プロパティーを NO に設定することにより、デフォルトの設定を 0 にできます。この設定は、VisualAge Generator ではデフォルトです。 |