tcl/tk參考——控制結構catch
阿新 • • 發佈:2019-01-05
.
.
名稱
catch - 執行指令碼並捕獲錯誤
語法
catch script ?resultVarName? ?optionsVarName?
描述
catch命令用來防止出現錯誤而導致指令碼執行終止,catch命令可以呼叫Tcl直譯器去執行指令碼,並且能夠正常返回。
如果指令碼產生一個錯誤,catch將返回一個非0的整數,如果沒有捕獲到錯誤就返回0或TCL_OK,Tcl還定義了四種異常程式碼:1(TCL_ERROR)、2(TCL_RETURN)、3(TCL_BREAK)和4(TCL_CONTINUE)。當執行指令碼產生錯誤時就返回TCL_ERROR,其它的異常由return、break
如果給出了resultVarName變元,當返回1時,儲存在resultVarName中的為錯誤資訊,如果返回0,儲存在resultVarName中的為指令碼執行結果。
如果給出了optionsVarName變元,變數裡面包含有-code和-level兩個條目,如果返回程式碼不是TCL_RETURN時,-level為0,-code為返回的異常程式碼,當返回程式碼為TCL_RETURN時,-level和-code為其它的值,詳細解釋見return命令。
當返回TCL_ERROR時,三個額外的條目將會新增到optionsVarName中:-errorinfo、-errorcode
示例
catch命令可以在if命令中使用。
if { [catch {open $someFile w} fid] } {
puts stderr "Could not open $someFile for writing/n$fid"
exit 1
}
在return命令中有更多的關於catch