このセクションでは、デバッガの使用時にエラーを処理する方法について説明します。
デバッガを使用して、プログラムの実行を中断させた Natural システムエラーを分析できます。 テストモードを ON
に設定した場合(「テストモードのオンとオフの切り替え」を参照)、または、DBGERR
を ON
に設定した場合(『パラメータリファレンス』ドキュメントを参照)、エラーが発生するとデバッガが制御を取得します。 この場合、次の例のような[Debug Break]ウィンドウが表示されます。
+------------------- Debug Break -------------------+ ! Break by NATURAL error 1316 ! ! at line 60 in program SAGTEST (level 1) ! ! ! ! G Go ! ! L List break ! ! M Debug Main Menu ! ! N Next break command ! ! R Run (set test mode OFF) ! ! S Step mode ! ! V Variable maintenance ! ! ! ! Code .. G ! ! ! ! Index not within array structure. ! ! PF2=Step,PF13=Next,PF14=Go,PF15=Menu,PF17=SkipS ! +---------------------------------------------------+ |
[List break]機能を使用すると、最後のステートメントを実行した位置で、プログラムのソースコードを表示できます。 Natural エラー番号が画面の右側にある[Message]列に表示され、対応するソースコード行が強調表示されます。
この時点で、例えばプログラム内で変数の内容を確認し、エラーの原因を特定できます。
アプリケーションのデバッグ時にエラーが検出されると、デバッガは実行を停止して、次に示す例のようなエラーメッセージのウィンドウを表示します。
+------------------ NATURAL Debug Error ---------------------------+ ! NATURAL error 3009 has occurred in the NATURAL Debugger. ! ! Last transaction backed out of database 10. Subcode 3 ! ! ! ! Error occurred on level 5 in line 4150 in ! ! subprogram DBGTEST in library TEST. ! ! DBGTEST has been loaded from FNAT=(10,932). ! ! DBGTEST has been cataloged on 2005-04-12 14:43:07. ! ! ! ! Debugging terminates. ! ! Pass this error to application for error processing ? (Y/N): N ! +------------------------------------------------------------------+ |
N
(No - これがデフォルト設定です)でこのエラーメッセージを確認すると、次のような操作が行われます。
デバッガはデバッグを停止して、テストモードを OFF
に設定します。
Natural ランタイムシステムはエラーを無視して、アプリケーションの実行を続けます。
Y
(Yes)でこのメッセージを確認すると、次のような操作が行われます。
デバッガはデバッグを停止して、テストモードを OFF
に設定します。
Natural ランタイムシステムはエラーに対処して、エラーをアプリケーションに渡します。
ON ERROR
ステートメントが使用されている場合(『ステートメント』ドキュメントを参照)、アプリケーションは実行時のエラーが発生した後の対処方法を決定します。 例えば、トランザクションがデータベースからバックアウトされる NAT3009 の場合、アプリケーションは適切なアクションを実行できます。
ON ERROR
ステートメントが使用されていない場合、Natural ランタイムシステムは、アプリケーションの実行を停止し、Natural コマンドプロンプトを表示します。