Fehlerbehandlung

Dieser Abschnitt enthält Informationen zur Behandlung von Fehlern, die bei der Benutzung des Debuggers auftreten können.


Fehler während der Anwendungsausführung

Sie können den Debugger benutzen, um einen Natural-Systemfehler zu analysieren, der die Programmausführung unterbricht. Bei Test-Modus auf ON (siehe Test-Modus ein- und ausschalten) oder Natural-Profilparameter DBGERR auf ON (siehe DBGERR - Automatischer Debugger-Start bei Laufzeitfehler in der Parameter-Referenz-Dokumentation) übernimmt der Debugger die Steuerung, wenn ein Fehler auftritt. In diesem Fall erscheint ein Debug Break-Fenster, zum Beispiel:

+------------------- 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   !
+---------------------------------------------------+

Sie können die Funktion List break benutzen, um den Quellcode des Programms an der Stelle anzuzeigen, an der das letzte Statement ausgeführt wurde. Die Natural-Fehlernummer wird rechts im Bildschirm in der Spalte Message angezeigt und die entsprechende Quellcode-Zeile ist hervorgehoben.

Sie können dann beispielsweise den Inhalt der Variablen in dem Programm untersuchen, um den Grund für den Fehler zu bestimmen.

Fehler während der Debugger-Ausführung

Falls während der Debugger-Ausführung in einer Anwendung (nachfolgend: "Debugging") ein Fehler festgestellt wird, beendet der Debugger seine Arbeit und ruft ein Fenster mit einer Fehlermeldung ähnlich der im folgenden Beispiel gezeigten auf:

+------------------ 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   !
+------------------------------------------------------------------+

Wenn Sie diese Fehlermeldung durch Eingabe von N (No - dies ist die Standardeinstellung) bestätigen, geschieht Folgendes:

  • Der Debugger beendet das Debugging und schaltet den Test-Modus aus (OFF).

  • Das Natural-Laufzeitsystem ignoriert den Fehler und setzt die Ausführung der Anwendung fort.

Wenn Sie die Fehlermeldung durch Eingabe von Y (Yes) bestätigen, geschieht Folgendes:

  • Der Debugger beendet das Debugging und schaltet den Test-Modus aus (OFF).

  • Das Natural-Laufzeitsystem reagiert auf den Fehler und übergibt ihn an die Anwendung:

    Wenn ein ON ERROR-Statement (siehe Statements-Dokumentation) verwendet wird, bestimmt die Anwendung das weitere Vorgehen, nachdem ein Fehler zur Ausführungszeit aufgetreten ist. Zum Beispiel, im Fall eines Fehlers NAT3009, bei dem eine Transaktion aus der Datenbank zurückgesichert wird (Back out), kann die Anwendung entsprechende Maßnahmen ergreifen.

    Falls kein ON ERROR-Statement verwendet wird, beendet das Natural-Laufzeitsystem die Ausführung der Anwendung und kehrt zur Anzeige einer Natural-Eingabeaufforderung zurück.