swi-prolog를 사용하고 예외 처리를 사용하려고합니다. 내가 예를 들어, 직접 문자열을 던져 real_pred
의 몸에서예외 메시지를받을 수 없습니다.
writeAndFail(message)
:- write(message)
, fail.
pred(arg1, arg2)
:- catch(
real_pred(arg1, arg2),
Exception,
writeAndFail(Exception)
).
같은 시스템을 가지고 throw('message')
. 적절한 테스트 케이스에서 pred를 호출하면 예외가 throw되어 올바르게 캐치되지만 메시지는 쓰여지지 않습니다. 예외 메시지가 인쇄되도록이 코드를 어떻게 변경할 수 있습니까?
catch 조건자를 알고 있습니까 (SWI-Specfic이라고 생각합니까)? 그것은 첫 번째 인자를 에러시에 호출하고 (두 번째 인자는 특정 에러를 잡을 수있다.) 세번째 인자를 호출하므로 아무런 문제가 없지만'writeAndFail'에 맞다. –
죄송합니다. 제대로 읽지 못하셨습니까? –