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