옥타브가 리스프의 비보호 형식을 본따온 제한된 형식의 예외 처리 모형을 제공합니다.
unwind_protect
구역의 일반적인 형식입니다.
unwind_protect 몸체부 unwind_protect_cleanup 후위부 end_unwind_protect
몸체부와 후위부 모두 선택 사항이고, 각 부는 모든 옥타브 표현식과 명령어를 포괄합니다. 후위부 안 명령문은 몸체부가 어떻게 종료되는지와는 상관 없이 실행을 보장합니다.
이는 발생 가능한 오류로 인한 전역 변수의 임시적인 변경을 막는데에 유용합니다. 예를 들어, 아래 부호는 첫 번째 unwind_protect
구역이 오류를 일으키더라도, 전역 변수 frobnosticate
의 원래 값을 늘 지웁니다.
save_frobnosticate = frobnosticate; unwind_protect frobnosticate = true; … unwind_protect_cleanup frobnosticate = save_frobnosticate; end_unwind_protect
unwind_protect
가 없으면, 첫 번째 unwind_protect
구역에서 오류가
발생하지 않으면, 오류 발생 지점에서 평가가 멈추어 값 소거 명령문을 실행하지 않아 frobnosticate의 값이 지워지지
않습니다.
비보호 시행문에 더하여, 옥타브는 또다른 형식의 예외 처리 형식인 try
구역도 제공합니다.