v60ExceptionCompatibility プログラム・プロパティーを YES に設定し、
EGL バージョン 6.0 の例外処理の振る舞いを元に戻すことができます。v60ExceptionCompatibility を参照してください。
バージョン 6 からコードをマイグレーションする場合は、EGL により v60ExceptionCompatibility プロパティーが自動的に YES に設定されます。
1 つの実行単位内にある複数の異なるプログラムでこのプロパティーを別の値に設定することは可能ですが、そうすることは危険です。
実行単位の中にマイグレーションされたコードが含まれていない場合、新規コードの開発で V6 の例外モードを使用することはお勧めできません。
v60ExceptionCompatibility を YES に設定すると、ほとんどのシステム関数呼び出し (EGL の mathLib または sysLib などのライブラリーに対する呼び出し) の後で、
sysVar.errorCode システム変数にアクセスすることができます。V6 の例外モードを使用していない環境の場合、
sysVar.errorCode の値は未定義です。
システム関数呼び出しの後で
sysVar.errorCode にアクセスするには、以下のアクションのいずれかを実行しなければなりません。
以下の状況でエラーが発生すると、プログラムは即時に終了します。
- V6 の例外モードを使用している。
- try ブロックの外側でエラーが発生した。
- vgVar.handlesysLibraryErrors が 0 に設定されている。
V6 例外モードで実行している場合、ハードの入出力エラーは、プログラムが終了する原因になります。ただし、エラーが
try ブロックで発生し、以下の変数のいずれかを 1 に設定している場合は除きます。
- vgVar.handleHardIOErrors。この変数を設定した場合、EGL はすべての入出力呼び出し時のハードの入出力エラーを処理します (DL/I レコードに関するものも含みます)。
- dliVar.handleHardDLIErrors。この変数を設定した場合、EGL は DLISegment ステレオタイプを持つレコードを参照するハードの入出力エラーのみを処理します。