다음: 시행문, 이전: 반복 회귀문, 상위 문서: 명령문   [차례][찾아보기]


10.8 비보호 시행문

옥타브가 리스프의 비보호 형식을 본따온 제한된 형식의 예외 처리 모형을 제공합니다.

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 구역도 제공합니다.