JSON 구문 분석이 실패하면 catch 블록을 실행하지 마세요.
Try에서 JSON 구문 분석이 실패하면 catch 블록이 실행되지 않는 것 같습니다. 또한 과거에는 잘못된 형식의 JSON을 구문 분석하는 것이 이보다 더 문제가 되었다는 것을 알았습니다. 이 스레드 ) 그래서 해당 스레드에서 제안된 구문 분석 논리를 가져왔으며 이를 통해 Try가 예상대로 작동하도록 할 수 있었지만 Try가 catch를 실행하지 않는 매우 구체적인 시나리오가 있다는 점은 문제가 있는 것 같습니다.
암호:
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>산출:</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
자동화 및 스크립팅Re: JSON 구문 분석이 실패하면 catch 블록을 실행하지 마세요.(이 댓글은 실수로 작성했는데 삭제할 수 있는 방법이 없습니다.)
Re: JSON 구문 분석이 실패하면 catch 블록을 실행하지 마세요.Parse JSON()이 오류를 발생시키지 않기 때문에 Try()는 오류를 포착하지 않습니다. 로그에 메시지를 인쇄하고 오류가 있는 경우 누락된 값을 반환합니다.
JMP의 일부 기능에서는 오류가 발생합니다. 이는 일반적으로 오류가 심각하여 명시적으로 처리해야 하기 때문입니다. 일부는 로그 메시지(이와 같은)를 작성하고 JSL이 계속됩니다. 때로는 실패한 반환 코드가 누락된 값인 경우도 있습니다. ismissing() 함수를 사용하여 테스트할 수 있습니다.
나는 이것이 메시지/누락된 값이 아니라 던지기여야 한다는 데 동의하지만, 이렇게 많은 릴리스 이후에 변경될 것이라고는 기대하지 않습니다.
Re: JSON 구문 분석이 실패하면 catch 블록을 실행하지 마세요.나는 그것이 의미가 있다고 생각합니다. Is Missing은 Parse JSON이 성공할 경우 발생하므로 여기서는 Is Missing보다 Is Associative Array를 사용하는 것이 더 나을 가능성이 있다는 점을 미래의 독자들에게 알려주세요.
다른 언어로 구문 분석하면 잘못된 JSON이 발생하는 경향이 있고 이러한 종류의 로그 전용 예외가 전체 예외와 매우 유사해 보이기 때문에 이를 스크립팅 인덱스에 기록하면 도움이 될 것입니다.
Re: JSON 구문 분석이 실패하면 catch 블록을 실행하지 마세요.@줄리안 - 잘못된 JSON을 처리하는 방법과 이를 처리하는 모범 사례를 문서화합니다. 제 생각에는 @매트스키 그게 맞다 누락 숫자가 아닌 경우 성가신 실패 모드가 있습니다.