catch(3tcl) Tcl Built-In Commands catch(3tcl)

catch - 對指令碼求值並追蹤異常返回

總覽 SYNOPSIS

catch script ?varName?

描述 DESCRIPTION

catch 命令被用於防止出錯導致的終止命令解釋。Catch 遞迴的呼叫 Tcl 直譯器來執行 script,並且不顧在執行 script 期間可能發生的任何錯誤,它總是返回而不引發(raise)任何錯誤。

如果 script 引發一個錯誤,catch 將返回一個非零的整數值,相應於異常返回程式碼中的一個(參見 tcl.h 來找到程式碼值的定義)。如果給出了 varName 引數,則它所指名的變數被設定成從解釋 script 得到的錯誤訊息。

如果 script 不引發任何錯誤,catch 將返回 0(TCL_OK)並設定這個變數為指令碼返回的值。

注意 catch 捕獲所有的例外,如同錯誤一樣,包括了由 break continue 生成的例外。唯一不捕獲的錯誤是在編譯指令碼時發現的語法錯誤。這是因為 catch 命令只捕捉執行時的錯誤。當 catch 語句被編譯後,指令碼同樣要被編譯,並且任何錯誤都將生成一個 Tcl 錯誤。

catch 命令可在一個 if 中使用,基於一個指令碼的(是否)成功而(進行)分支(branch)。

if { [catch {open $someFile w} fid] } {
    puts stderr "Could not open $someFile for writing\n$fid"
    exit 1
}
catch 命令不捕捉編譯後的語法錯誤。第一次呼叫 proc foo 時,(過程)體將被編譯並且生成一個 Tcl 錯誤。
proc foo {} {
    catch {expr {1 +- }}
}

關鍵字 KEYWORDS

catch, error

寒蟬退士

2001/06/21

《中國 Linux 論壇 man 手冊頁翻譯計劃》:

http://cmpp.linuxforum.net

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh

8.0 Tcl