2016-07-14 24 views
1

Hallo Ich verwende derzeit IBM Spss, und ich frage mich, ob es eine Möglichkeit gibt, wenn der Code eine Ausnahme auslöst, um die Codezeile zu erhalten, wo die Ausnahme aufgetreten ist ? Ich bin in der Lage, die Zeilennummer zu erhalten gibt es eine Möglichkeit, den Stapel der Zeilen, die ausgeführt wurden, zuzugreifen und diese Informationen von dort abrufen? Irgendwelche Ideen wären toll Vielen Dank im Voraus!Spss (mrScriptBasic) Fehlerbehandlung Code erhalten, bei dem Fehler aufgetreten ist

Beispiel:

Dim x, y, z 
On Error Goto ErrorHandler 
x = 30 
y = 0 
z = x/y 'would like to grab this code since this is where the error occurred 
Exit 


ErrorHandler: 
debug.Log(Err.Description + _ 
" error occurred on line number " + _ 
CText(Err.LineNumber)) 

Antwort

2

Nein, es gibt keine Möglichkeit, die Zeilennummer zu den eigentlichen Code abzubilden, wenn Sie Ihren eigenen Index zu halten, für Makroerweiterung ermöglicht usw.

Was können Sie tun ist jedoch, den Code in Blöcken einzureichen und die Ausnahme für diesen Block abzufangen, der den Standort einschränkt. Wenn jede Zeile im Block ein eigener Block ist, wissen Sie genau, wo der Fehler aufgetreten ist.

+0

Vielen Dank für Ihre Antwort @JKP Ich dachte über den Block und das Abfangen der Ausnahme, aber für das, was ich versuche zu tun, müsste ich den tatsächlichen Code erhalten, wo der Fehler aufgetreten ist. Du meintest, dies könnte mit Macro-Erweiterung möglich sein, beziehst du dich darauf, meinen eigenen Stack zu erstellen und den Überblick zu behalten? Könnten Sie mir bitte mehr Informationen geben? – paul590

+1

Wenn Sie keine Makros haben, genügt es in einfachen Fällen, nur ein Array von Befehlen zu führen und sie einzeln auszuführen. Wenn Sie jedoch INSERT- oder INCLUDE-Befehle im Stream haben, würden Sie das INSERT/INCLUDE abrufen anstatt den Inhalt der Datei. Sie müssten den Inhalt dieser Dateien abfangen und lesen und die Befehle analysieren. Nicht einfach. – JKP

+1

Mit Makros können Sie SET MPRINT ON ausführen und die Befehle von der Journaldatei abkratzen. Das lässt mich denken, dass es vielleicht die beste Strategie ist, im Falle eines Fehlers das Ende der Journaldatei zu betrachten. Die Journaldatei zeichnet die gesamte aktuelle Syntax auf, vorausgesetzt, das Journaling ist aktiviert, und die Datei wird nach jedem Befehl auf den Datenträger geschrieben, sodass sie immer aktuell ist. Hier sehen Sie, wie diese Inhalte im Fehlerfall aussehen könnten: – JKP