tcl/tk參考——控制結構catch

Augusdi發表於2015-10-10


名稱

catch - 執行指令碼並捕獲錯誤

語法

catch script ?resultVarName? ?optionsVarName?

描述

catch命令用來防止出現錯誤而導致指令碼執行終止,catch命令可以呼叫Tcl直譯器去執行指令碼,並且能夠正常返回。

如果指令碼產生一個錯誤,catch將返回一個非0的整數,如果沒有捕獲到錯誤就返回0TCL_OK,Tcl還定義了四種異常程式碼:1TCL_ERROR)、2TCL_RETURN)、3TCL_BREAK)和4TCL_CONTINUE)。當執行指令碼產生錯誤時就返回TCL_ERROR,其它的異常由returnbreakcontinue命令產生。

如果給出了resultVarName變元,當返回1時,儲存在resultVarName中的為錯誤資訊,如果返回0,儲存在resultVarName中的為指令碼執行結果。

如果給出了optionsVarName變元,變數裡面包含有-code-level兩個條目,如果返回程式碼不是TCL_RETURN時,-level0-code為返回的異常程式碼,當返回程式碼為TCL_RETURN時,-level-code為其它的值,詳細解釋見return命令。

當返回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的示例。

相關文章