실행으로 확인하기
LISPEX
(guard (e ((error-object? e) (error-object-message e))) (error "bad input"))관측 결과
OUTPUT
"bad input"패턴 따라가기
- 게스트 오류를 냅니다.
(error "bad input")이 안정된 메시지를 지닌 잡을 수 있는 오류 객체를 만듭니다. - 구조화된 값을 검사합니다.
guard는 출력 문자열을 파싱하지 않고error-object?를 검사합니다. - 복구 값을 반환합니다. 선택한 절이 메시지를 꺼내므로 전체 폼은
"bad input"으로 평가됩니다.
이 순서로 생각하세요
raise-continuable은 핸들러 결과를 raise 위치에 반환하며 비연속raise는 정상 반환할 수 없습니다.- 표시된 진단 문자열을 파싱하지 말고 문서화된 오류 객체 술어·접근자를 사용합니다.
guard절이 일치하지 않으면 원래 오류를 변경 없이 다시 발생시킵니다.
직접 확인하기
guard의 어떤 절도 오류 객체와 맞지 않으면 어떻게 될까요?
답
원래 오류를 바꾸지 않고 다시 냅니다. 일치 항목이 없다고 일반 성공 값으로 바뀌지 않습니다.
흔한 오해
ResourceLimit은 잡을 수 없으며 호스트 크래시를 친절한 게스트 오류로 바꾸지 않습니다.
다음으로
진단에서 단계와 코드를 보고, 결정 규칙에서 잘못된 입력을 사업 결정 전에 거부하는 법을 확인하세요.