error — 에러 만들기

error — 에러 만들기

스크립트 도중에 문제가 생겼을 때, 그 사실을 호출자에게 명확히 알려야 할 때가 있어요. 단순히 값을 반환하는 게 아니라 에러로 처리하고 싶을 때 Tcl의 error 명령을 써요.

출처: Tcl 공식 문서 — error

본문

시그니처

error message ?info? ?code?

설명

TCL_ERROR 코드를 반환해 명령 해석이 풀리게(unwind) 해요. message는 무엇이 잘못됐는지를 나타내기 위해 응용 프로그램에 반환되는 문자열이에요.

인터프리터의 -errorinfo 반환 옵션은 에러가 발생했을 때 진행 중이던 스택 추적을 축적하는 데 쓰여요. 중첩 명령이 풀리면서 Tcl 인터프리터는 -errorinfo 반환 옵션에 정보를 추가해요. info 인자가 있으면 -errorinfo 반환 옵션을 초기화하는 데 쓰이고, Tcl 인터프리터는 첫 번째 unwind 정보 증가분을 추가하지 않아요. 즉 error 명령을 담고 있던 명령은 스택 추적에 나타나지 않고, 그 자리에 info가 들어와요.

역사적으로 이 기능은 catch 명령과 함께 쓰일 때 가장 유용했어요: 잡힌 에러를 성공적으로 처리할 수 없으면, info를 써서 에러 원래 발생 지점을 반영한 스택 추적을 반환할 수 있어요:

catch {...} errMsg
set savedInfo $::errorInfo
 ...
error $errMsg $savedInfo

Tcl 8.5 이상에서 작업할 때는 다음 코드를 대신 써야 해요:

catch {...} errMsg options
 ...
return -options $options $errMsg

code 인자가 있으면 그 값은 -errorcode 반환 옵션에 저장돼요. -errorcode 반환 옵션은 정보가 있을 때 에러의 기계 판독 가능한 설명을 담기 위한 것이에요. 이 옵션 값의 올바른 형식은 return 매뉴얼 페이지를 참고하세요.

예제

기본 산술 연산이 실패하면 에러를 만드는 예제예요:

if {1+2 != 3} {
 error "something is very wrong with addition"
}

더 알아보기

  • catch, return
  • 키워드: error, exception