JMP 11의 예외 처리<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕,
특정 JMP 예외를 찾기 위해 try()/throw()를 사용할 수 있습니까?
여러 동적 소스에서 여러 테이블을 업데이트하는 스케줄러가 있습니다.
누락된 파일, 열 또는 잘못된 데이터 유형과 같은 것을 잡아서 log.txt에 기록하여 스케줄러가 충돌하는 경우 쉽게 찾고 수정할 수 있도록 하고 싶습니다. 자바의 try and catch와 비슷합니다.
나는 함수 log capture()가 존재한다는 것을 알고 있지만 try()를 사용하고 있기 때문에 오류가 로그에 기록될 기회를 얻지 못합니다. 내 캐치 표현식으로 이동합니다.
필요한 경우 샘플 코드를 게시할 수 있습니다.
감사!
Re: JMP 11의 예외 처리추가로 조사했습니다.JSL try() 함수(및 LogCapture)는 실제로 더 나은 작업을 수행할 수 있습니다. exception_msg를 통해 다시 보고할 수 있는 여러 종류의 메시지를 간과하고 있습니다.최종 결과는 try()가 오류를 포착하지만 정확한 오류 메시지가 표시되지 않는다는 것입니다(로그에도 전송되지 않음).
나는 exception_msg 가능성 목록이 없을 것이라고 확신합니다.때로 exception_msg는 문자열이 될 수도 있고 목록이 될 수도 있습니다(앞의 두 예에서 보았듯이).
고마워, 내 목록에 추가할게 - Craige
Re: JMP 11의 예외 처리Craig에게 감사합니다. 우리가 대기 모드로 구현한 방법과 거의 비슷합니다. 문제를 해결하기 위해 래퍼를 사용하여 인터페이스가 자체 예외 메시지 변수를 사용하도록 했습니다. JMP의 exception_msg 변수 출력 중 일부에 정보가 부족한 이유를 설명할 수 있었습니다.
exception_msg 변수의 가능한 모든 출력과 이를 트리거하는 예외에 대한 문서가 있습니까?
나는 이것이 계획에 매우 유용하다는 것을 알 수 있었다.
Re: JMP 11의 예외 처리JSL try() 함수의 catch 표현식에서 피드백을 얻는 유일한 방법은 Exception_msg 변수를 통하는 것이지만 해당 변수가 항상 유용한 값으로 설정되는 것은 아닙니다.때때로 그렇습니다.JSL throw() 함수를 사용하여 다음과 같이 설정할 수 있습니다.
try( print("hello"); throw("뱅!"), show(exception_msg))
"안녕하세요"
exception_msg = "쾅!";
따라서 다음과 같이 예외를 생성할 수 있는 다른 JSL을 래핑할 수 있습니다.
myOpen = 함수({파일},
시도(열기(파일),
throw("열 수 없습니다"||파일|| " details="||char(exception_msg)))
);
try( myopen("NOSUCHFILE.JMP"), show(exception_msg) );
exception_msg = "NOSUCHFILE.JMP 정보=를 열 수 없습니다.";
열기는 exception_msg(위의 세부 정보 없음)를 설정하지 않았지만 sqrt(string value)는(추가 세부 정보, 아래) 설정합니다.
mysqlt = 함수({v},
시도(제곱미터(v),
throw("sqrt할 수 없습니다. "||v|| "\!ndetails="||char(exception_msg)))
);
try( mysqrt("빼기 1"), write(exception_msg) );
sqrt 마이너스 1 수 없습니다
details={"인수를 숫자[또는 행렬]로 변환할 수 없습니다."(1, "Sqrt", Sqrt /*###*/(v))}
따라서 sqrt에 대한 래퍼가 실제로 필요하지 않습니다.가능한 exception_msg를 자신의 더 밝은 메시지에 연결하면 향후 예외 메시지를 반환하도록 open이 향상되는 경우 더 자세한 정보를 얻을 수 있습니다.exception_msg 주변의 char() 함수는 존재하지 않는 메시지를 연결을 위해 유효한 문자열로 변환합니다.
제목: JMP 11의 예외 처리 관련예외 메시지 의 각 항목들이 무슨 의미인지 아는 사람 있나요?
요즘은 항목이 하나 더 추가되었습니다.
details={"Cannot convert argument to a number [or matrix]"(1, 2, "Sqrt", Sqrt /*###*/(v))}
