Tcl - Xử lý lỗi
Xử lý lỗi trong Tcl được cung cấp với sự trợ giúp của error và catchcác lệnh. Cú pháp cho mỗi lệnh này được hiển thị bên dưới.
Cú pháp lỗi
error message info code
Trong cú pháp lệnh lỗi ở trên, thông báo là thông báo lỗi, thông tin được đặt trong errorInfo biến toàn cục và mã được đặt trong Mã lỗi biến toàn cục.
Bắt cú pháp
catch script resultVarName
Trong cú pháp lệnh catch ở trên, script là mã được thực thi, resultVarName là biến lưu giữ lỗi hoặc kết quả. Lệnh catch trả về 0 nếu không có lỗi và 1 nếu có lỗi.
Dưới đây là một ví dụ để xử lý lỗi đơn giản:
#!/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"
}
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
ErrorMsg: Error generated by error
ErrorCode: 401
ErrorInfo:
Info String for error
(procedure "Div" line 1)
invoked from within
"Div 10 0"
Result = 5
Như bạn có thể thấy trong ví dụ trên, chúng ta có thể tạo các thông báo lỗi tùy chỉnh của riêng mình. Tương tự, có thể bắt lỗi do Tcl tạo ra. Một ví dụ được hiển thị bên dưới -
#!/usr/bin/tclsh
catch {set file [open myNonexistingfile.txt]} result
puts "ErrorMsg: $result"
puts "ErrorCode: $errorCode"
puts "ErrorInfo:\n$errorInfo\n"
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
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"