Tcl-오류 처리

Tcl의 오류 처리는 다음의 도움으로 제공됩니다. errorcatch명령. 이러한 각 명령의 구문은 다음과 같습니다.

오류 구문

error message info code

위의 오류 명령 구문에서 message는 오류 메시지, info는 전역 변수 errorInfo에 설정되고 code는 전역 변수 errorCode에 설정되어 있습니다.

캐치 구문

catch script resultVarName

위의 catch 명령 구문에서 script는 실행될 코드이고 resultVarName은 오류 또는 결과를 보유하는 변수입니다. catch 명령은 오류가 없으면 0을 반환하고 오류가 있으면 1을 반환합니다.

간단한 오류 처리의 예는 다음과 같습니다.

#!/usr/bin/tclsh

proc Div {a b} {
   if {$b == 0} { error "Error generated by error" "Info String for error" 401 } else { return [expr $a/$b] } } if {[catch {puts "Result = [Div 10 0]"} errmsg]} { puts "ErrorMsg: $errmsg"
   puts "ErrorCode: $errorCode" puts "ErrorInfo:\n$errorInfo\n"
}

if {[catch {puts "Result = [Div 10 2]"} errmsg]} {
   puts "ErrorMsg: $errmsg" puts "ErrorCode: $errorCode"
   puts "ErrorInfo:\n$errorInfo\n"
}

위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.

ErrorMsg: Error generated by error
ErrorCode: 401
ErrorInfo:
Info String for error
   (procedure "Div" line 1)
   invoked from within
"Div 10 0"

Result = 5

위의 예에서 볼 수 있듯이 사용자 지정 오류 메시지를 만들 수 있습니다. 마찬가지로 Tcl에 의해 생성 된 오류를 포착 할 수 있습니다. 아래에 예가 나와 있습니다.

#!/usr/bin/tclsh

catch {set file [open myNonexistingfile.txt]} result
puts "ErrorMsg: $result"
puts "ErrorCode: $errorCode" puts "ErrorInfo:\n$errorInfo\n"

위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.

ErrorMsg: couldn't open "myNonexistingfile.txt": no such file or directory
ErrorCode: POSIX ENOENT {no such file or directory}
ErrorInfo:
couldn't open "myNonexistingfile.txt": no such file or directory
   while executing
"open myNonexistingfile.txt"