Scroll to navigation

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


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 捕获所有的例外,如同错误一样,包括了由 break continue 生成的例外。唯一不捕获的错误是在编译脚本时发现的语法错误。这是因为 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
8.0 Tcl