Essayez de ne pas exécuter le bloc catch lorsque l'analyse JSON échoue
Je vois que lorsque Parse JSON échoue lors d'un Try, le bloc catch ne semble pas être exécuté. Je vois également que l'analyse du JSON mal formé a été plus problématique que cela dans le passé (voir ce fil ), j'ai donc récupéré la logique d'analyse suggérée par ce fil, ce qui me permet de faire en sorte que Try se comporte comme prévu, mais il semble problématique que Try ait ce scénario très spécifique dans lequel il n'exécute pas sa capture.
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>Sortir:</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
Automatisation et scriptsRe : Essayez de ne pas exécuter le bloc catch lorsque l'analyse JSON échoue(j'ai fait ce commentaire par erreur, je ne vois pas comment le supprimer)
Re : Essayez de ne pas exécuter le bloc catch lorsque l'analyse JSON échoueTry() ne détecte pas l'erreur car Parse JSON() ne génère pas d'erreur. Il imprime un message dans le journal et renvoie une valeur manquante en cas d'erreur.
Certaines fonctions de JMP génèrent des erreurs ; c'est généralement parce que l'erreur est grave et doit être explicitement traitée. Certains écrivent un message de journal (comme celui-ci) et le JSL continue. Parfois, le code retour défaillant est simplement une valeur manquante ; vous pouvez utiliser la fonction ismissing() pour le tester.
Je suis d'accord que cela aurait dû être un lancer plutôt qu'un message/une valeur manquante, mais je ne m'attendrais pas à ce que cela change après autant de versions.
Re : Essayez de ne pas exécuter le bloc catch lorsque l'analyse JSON échoueJe suppose que cela a du sens. Notez simplement pour les futurs lecteurs qu'il est probablement préférable d'utiliser Is Associative Array ici plutôt que Is Missing, car Is Missing sera lancé au cas où Parse JSON réussirait.
Il serait utile que cela soit noté dans l'index de script, car l'analyse dans d'autres langages a tendance à générer des JSON mal formés et puisque ce type d'exception de journal uniquement ressemble assez à une exception complète.
Re : Essayez de ne pas exécuter le bloc catch lorsque l'analyse JSON échoue@julien - documenter comment il gère les mauvais JSON et les meilleures pratiques pour y faire face. Je pense @mat-ski est exact que est manquant a un mode d'échec ennuyeux pour les non-numéros.