Manpages

______________________________________________________________________________

NAME

catch - 對 腳 本 求 值 並 追 蹤 異 常 返 回

總 覽 SYNOPSIS

catch script ?varName? _________________________________________________________________

描 述 DESCRIPTION

catch 命 令 被 用 於 防 止 出 錯 導 致 的 終 止 命 令 解 釋 。 Catch 遞 歸 的 調 用 Tcl 解 釋 器 來 執 行 script, 並 且 不 顧 在 執 行 script 期 間 可 能 發 生 的 任 何 錯 誤 , 它 總 是 返 回 而 不 引 發 (raise)任 何 錯 誤 。 如 果 script 引 發 一 個 錯 誤 , catch 將 返 回 一 個 非 零 的 整 數 值 , 相 應 於 異 常 返 回 代 碼 中 的 一 個 (參 見 tcl.h 來 找 到 代 碼 值 的 定 義 )。 如 果 給 出 了 varName 參 數 , 則 它 所 指 名 的 變 量 被 設 置 成 從 解 釋 script 得 到 的 錯 誤 消 息 。 如 果 script 不 引 發 任 何 錯 誤 , catch 將 返 回 0(TCL_OK)並 設 置 這 個 變 量 爲 腳 本 返 回 的 值 。 注 意 catch 捕 獲 所 有 的 例 外 , 如 同 錯 誤 一 樣 , 包 括 了 由 breakcontinue 生 成 的 例 外 。 唯 一 不 捕 獲 的 錯 誤 是 在 編 譯 腳 本 時 發 現 的 語 法 錯 誤 。 這 是 因 爲 catch 命 令 只 捕 捉 運 行 時 的 錯 誤 。 當 catch 語 句 被 編 譯 後 , 腳 本 同 樣 要 被 編 譯 , 並 且 任 何 錯 誤 都 將 生 成 一 個 Tcl 錯 誤 。

EXAMPLES

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