轉載 2015年10月10日 13:10:16spa
code
catch - 執行腳本並捕獲錯誤ip
catch script ?resultVarName? ?optionsVarName?it
catch命令用來防止出現錯誤而致使腳本執行終止,catch命令能夠調用Tcl解釋器去執行腳本,而且可以正常返回。io
若是腳本產生一個錯誤,catch將返回一個非0的整數,若是沒有捕獲到錯誤就返回0或TCL_OK,Tcl還定義了四種異常代碼:1(TCL_ERROR)、2(TCL_RETURN)、3(TCL_BREAK)和4(TCL_CONTINUE)。當執行腳本產生錯誤時就返回TCL_ERROR,其它的異常由return、break和continue命令產生。變量
若是給出了resultVarName變元,當返回1時,存儲在resultVarName中的爲錯誤信息,若是返回0,存儲在resultVarName中的爲腳本運行結果。語法
若是給出了optionsVarName變元,變量裏面包含有-code和-level兩個條目,若是返回代碼不是TCL_RETURN時,-level爲0,-code爲返回的異常代碼,當返回代碼爲TCL_RETURN時,-level和-code爲其它的值,詳細解釋見return命令。error
當返回TCL_ERROR時,三個額外的條目將會添加到optionsVarName中:-errorinfo、-errorcode和-errorline,-errorinfo條目是產生錯誤的信息,-errorcode條目是關於錯誤的一些額外信息,存儲爲列表方式,-errorline指出了錯誤發生的位置。-errorinfo和-errorcode條目都是最近發生的錯誤而且可使用::errorInfo和::errorCode。腳本
catch命令能夠在if命令中使用。異常
if { [catch {open $someFile w} fid] } {
puts stderr "Could not open $someFile for writing/n$fid"
exit 1
}
在return命令中有更多的關於catch的示例。