. .
catch - 執行指令碼並捕獲錯誤
catchscript ?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和continue命令產生。
如果給出了resultvarname變元,當返回1時,儲存在resultvarname中的為錯誤資訊,如果返回0,儲存在resultvarname中的為指令碼執行結果。
如果給出了optionsvarname變元,變數裡面包含有-code和-level兩個條目,如果返回**不是tcl_return時,-level為0,-code為返回的異常**,當返回**為tcl_return時,-level和-code為其它的值,詳細解釋見return命令。
當返回tcl_error時,三個額外的條目將會新增到optionsvarname中:-errorinfo、-errorcode和-errorline,-errorinfo條目是產生錯誤的資訊,-errorcode條目是關於錯誤的一些額外資訊,儲存為列表方式,-errorline指出了錯誤發生的位置。-errorinfo和-errorcode條目都是最近發生的錯誤並且可以使用::errorinfo和::errorcode。
catch命令可以在if命令中使用。
if fid] }在return命令中有更多的關於catch的示例。
tcl tk參考 控制結構update
update 處理掛起的事件和空閒 update?idletasks?這個命令用來給應用程式 更新 進入事件迴圈直到所有掛起的事件和空閒 都執行完畢。如果指定idletasks,就不處理新的事件或錯誤,只有空閒 被呼叫,這就導致操作被延遲了,就像顯示更新和視窗設計,會被立刻執行。當應用程式的狀態發生...
tcl tk參考 控制結構return
return 從程序中返回或者返回乙個值return?result?return?codecode?result?return?option value result?最簡單的用法,return命令在程式體內直接使用而不帶任何可選項,這樣將會使過程立刻返回。如果有 result變元,過程就返回 re...
tcl tk參考 控制結構foreach
foreach 反覆迴圈操作乙個或多個列表的每個元素foreachvarname list body foreachvarlist1 list1 varlist2 list2 body foreach命令執行乙個迴圈,迴圈的變數是乙個或多個列表的元素。最簡單的情況下是乙個迴圈變數 varname和乙...