実行時エラーの処理

GT.Mは、実行時(run-time)まで、間接指定、I/Oデバイスの機能、プログラムロジックに関連付けられた特定のエラータイプを検出できません。また、コンパイル時に書かれる(compile-as-written)機能は、実行パスにそれらを検出する時に、GT.Mに実行時のレポートするエラーが残る場合があります。 実行時に、GT.Mは標準エラー出力stderrに発生したすべてのエラーを報告します。ランタイムシステムは、エラーを検出するとすぐに、ルーチンの正常な実行を中断します。

GT.Mは、ダイレクトモード(コマンドラインで)または通常のプログラムの実行中に、それらを検出するかどうかに応じて異なるようにエラーに応答します。

実行しているGT.Mイメージがエラーを検出すると:

アクションの後、もしあれば、$ETRAP、$ZTRAPまたはEXCEPTIONによって起動されます:

ダイレクトモードでのランタイムエラー

GT.Mがダイレクトモードでエラーを検出する時は、メッセージでエラーを報告し、GTM> プロンプトでプロセスを残します。

例:

GTM>ZW
ZW
^_____
%GTM-E-INVCMD, Invalid command keyword encountered
GTM>        

ダイレクトモードでは、GT.Mは、RECALLコマンドへのアクセスを提供します。RECALLは、最小限のタイピング入力でダイレクトモードのコマンドラインを取得することができます。GT.Mラインエディタでは、コマンドラインに変更または修正をすばやく行うことができます。RECALLとラインエディタの詳細については、 第4章: “ダイレクトモードでの操作とデバッグ を参照してください。

ダイレクトモードの外側で実行時エラー

もしGT.Mがダイレクトモードで入力されたコードの外側でエラーが発生した場合、GT.Mは$ETRAPまたは$ZTRAP特殊変数を実行し、もしそれらのどちらか1つがゼロより大きい長さを持っている場合、任意の時点で持つことができます。

$ETRAPと$ZTRAP 固有な特殊変数が、ルーチン実行中にエラーが発生した時に、GT.Mが行うべきアクションを指定します。$ETRAPと$ZTRAPは、"アクション" を処理する一つ以上のエラーを確立できます。

[注意] 注意

環境変数 gtm_etrap は、$ETRAPの初期値を指定して、ベース・レベル・エラー・ハンドラとして $ZTRAP のデフォルト値 "B" を上書きします。gtmprofileスクリプトは gtm_etrap を "Write:(0=$STACK) ""Error occurred: "",$ZStatus,!" と設定してありますが、 ニーズに合わせてカスタマイズすることができます。 詳細は、 ダイレクトモードとシェルからのエラー処理” を参照してください。

inserted by FC2 system