0
, 나는 이러한 쿼리를 태그하고 전화를 forall/2
를 사용했다 : 나는 query(true).
처럼 뭔가를 정의하면, 내가 yes: true
를 볼 수 있습니다gprolog에서 오류 처리가 발생 했습니까? 간단한 쿼리에서 쿼리 그룹을 실행하기 위해
query_all :-
forall(query(Q), (Q ->
format('yes: ~w~n',[Q]) ;
format('no : ~w~n',[Q]))).
을 너무 출력에서.
여기서 문제는 "(/ 2 FORALL, existence_error (절차, 질의/1)) 오류"query(...)
항상하지 프롤로그 말을 실패합니다 query
, forall/2
태그 아무것도 원인 예외를 찾을 수 없을 때, 존재이다
이 예외를 처리하고 싶지만 전체 제어 흐름을 손상시키지는 않습니다.
catch(query_all, error(existence_error(procedure,_),_), recovery).
recovery :-
format('error occurred.~n',[]).
하지만 프롤로그는 "네이티브 코드 절차 캐치/3 재정의 할 수 없습니다"라는 :
내가 catch/3 내게 도움이 될 알고 있지만 내가 그것을 사용하는 방법을 모른다, 내 코드입니다. 내가 놓친 것이 있습니까? 당신도 코드이 줄을 추가하는query/1
동적 선언 할 수 있습니다