throw — 기계가 읽을 수 있는 오류 생성하기

throw — 기계가 읽을 수 있는 오류 생성하기

우리가 오류를 일으킬 때, 사람이 읽는 메시지뿐 아니라 프로그램이 처리할 수 있는 구조적인 정보를 함께 담고 싶을 때가 있어요. throw는 그 두 가지를 한 번에 지정해서 오류를 발생시키는 명령이에요. error 명령보다 더 세밀하게 오류 코드를 제어할 수 있어요.

출처: Tcl 공식 문서 - throw

본문

throw type message

이 명령은 현재 평가를 오류와 함께 풀어내(unwind)요. 만들어진 오류는 typemessage 인자로 설명돼요. type은 기계가 읽을 수 있는 형태로 오류를 설명하는 단어들의 리스트여야 해요(이 값이 결과 사전의 오류 코드 부분을 이룹니다). message는 사람에게 보여주기 위한 텍스트를 담아야 해요.

스택은 해당 오류가 적절한 catchtry 명령에 잡힐 때까지 풀려요. 이벤트 루프에 도달할 때까지 잡히지 않으면 bgerror 메커니즘을 통해 보고돼요. tclsh의 스크립트 평가 최상위 레벨까지 도달하면 콘솔에 출력되고, 비대화형 경우에는 종료로 이어져요(다른 프로그램에서의 동작은 Tcl이 어떻게 임베드되어 쓰이는지에 따라 달라져요).

관례상 type 인자의 단어들은 가장 일반적인 것에서 가장 구체적인 순서로 나열해요.

예제

다음은 expr에서 값을 0으로 나누려고 할 때 생기는 것과 동일한 오류를 만들어요.

throw {ARITH DIVZERO {divide by zero}} {divide by zero}

더 알아보기

  • catch — 오류 잡기
  • error — 오류 발생시키기
  • errorCode — 오류 코드 변수
  • errorInfo — 오류 스택 추적 변수
  • return — 반환 코드 지정
  • try — 예외 처리