결정적으로 오류 처리하기

절차적 처리는 with-exception-handler, 잡을 수 있는 오류 객체의 조건식 매칭은 guard를 사용합니다.

한눈에 보기

LISPEX
(guard (e ((error-object? e) (error-object-message e))) (error "bad input"))

결과

OUTPUT
"bad input"

작업 방법

  • raise-continuable은 핸들러 결과를 raise 위치에 반환하며 비연속 raise는 정상 반환할 수 없습니다.
  • 표시된 진단 문자열을 파싱하지 말고 문서화된 오류 객체 술어·접근자를 사용합니다.
  • guard 절이 일치하지 않으면 원래 오류를 변경 없이 다시 발생시킵니다.

경계

  • ResourceLimit은 잡을 수 없으며 호스트 크래시를 친절한 게스트 오류로 바꾸지 않습니다.