답변:
BTW, 대체 옵션은 다음과 같습니다.
(let ((error t))
(unwind-protect
(prog1 (call-function)
(setq error nil))
(when error (cleanup))))
장점은 오류를 잡아서 다시 던지는 것을 피한다는 것입니다. 예를 들어 디버거는 올바른 역 추적 (다른 사람의 오류를 다시 던지는 것에 해당하는 것이 아니라 실제 오류의 원인에 해당하는)을 표시합니다. ).
또 다른 차이점은 cleanup
오류 발생시뿐만 아니라 C-g
또는에 대한 호출로 코드가 중단 된 경우에도 호출됩니다 throw
.
quit
없음 error
). IOW 당신은 또한 그것을 잡을 수 condition-case
있지만 그 quit
와 함께 넣어야 error
합니다. 물론, 여전히 'throw'사례를 처리하지는 않습니다.
condition-case
잡을 수keyboard-quit
없습니까?