Versuchen Sie, den Catch-Block nicht auszuführen, wenn die JSON-Analyse fehlschlägt
Ich sehe, dass der Catch-Block nicht ausgeführt zu werden scheint, wenn Parse JSON in einem Try fehlschlägt. Ich sehe auch, dass das Parsen von fehlerhaftem JSON in der Vergangenheit problematischer war (siehe dieser Thread ), also habe ich mir die vorgeschlagene Parsing-Logik aus diesem Thread geholt, die es mir ermöglicht, dass sich Try wie erwartet verhält, aber es scheint problematisch, dass Try dieses sehr spezifische Szenario hat, in dem es seinen Catch nicht ausführt.
Code:
someVar = Try(
Parse JSON("{{1}}"),
Print("in catch 1");
2;
);
someVar2 = Try(
Throw( "broke!" ),
Print("in catch 2");
2;
);
someVar3 = Try(
txt = Log Capture( result = Parse JSON( "{{1}}") );
If( Length( txt ),
Throw( txt ) // error message
);
result; // parsed JSON
,
Print("in catch 3");
2;
);
Print("someVar is:");
Print(someVar);
Print("someVar2 is:");
Print(someVar2);
Print("someVar3 is:");
Print(someVar3);</CODE></P><P>Ausgabe:</P><P> </P><P> </P><PRE><CODE class=" language-jsl">Unexpected "{". Perhaps there is a missing }.
Line 1 Column 2: {►{1}}
"someVar is:"
.
"someVar2 is:"
2
"someVar3 is:"
2
Automatisierung und SkripterstellungBetreff: Versuchen Sie, den Catch-Block nicht auszuführen, wenn die JSON-Analyse fehlschlägt(habe diesen Kommentar irrtümlich gemacht, ich sehe keine Möglichkeit, ihn zu löschen)
Betreff: Versuchen Sie, den Catch-Block nicht auszuführen, wenn die JSON-Analyse fehlschlägtTry() fängt den Fehler nicht ab, da Parse JSON() keinen Fehler auslöst. Es gibt eine Meldung im Protokoll aus und gibt einen fehlenden Wert zurück, wenn ein Fehler auftritt.
Einige Funktionen in JMP lösen Fehler aus. Dies liegt in der Regel daran, dass der Fehler schwerwiegend ist und explizit behandelt werden muss. Einige schreiben eine Protokollnachricht (wie diese) und die JSL fährt fort. Manchmal ist der fehlgeschlagene Rückkehrcode einfach ein fehlender Wert; Sie können die Funktion ismissing() verwenden, um dies zu testen.
Ich stimme zu, dass dies eher ein Wurf als eine Nachricht/ein fehlender Wert hätte sein sollen, aber ich würde nicht erwarten, dass sich das nach so vielen Veröffentlichungen ändern wird.
Betreff: Versuchen Sie, den Catch-Block nicht auszuführen, wenn die JSON-Analyse fehlschlägtIch denke, das macht Sinn. Für zukünftige Leser möchte ich nur darauf hinweisen, dass es hier wahrscheinlich besser ist, „Is Associative Array“ zu verwenden, als „Is Missing“, da „Is Missing“ einen Fehler auslöst, falls Parse JSON erfolgreich ist.
Es wäre hilfreich, wenn dies im Skriptindex vermerkt würde, da das Parsen in anderen Sprachen dazu neigt, fehlerhaftes JSON auszulösen, und da diese Art von Nur-Protokoll-Ausnahme einer vollständigen Ausnahme recht ähnlich sieht.
Betreff: Versuchen Sie, den Catch-Block nicht auszuführen, wenn die JSON-Analyse fehlschlägt@julianisch - Dokumentieren, wie mit fehlerhaftem JSON umgegangen wird, und Best Practices für den Umgang damit. Ich finde @mat-ski ist das richtig wird vermisst hat einen nervigen Fehlermodus für Nicht-Zahlen.