转载 2015年10月10日 13:10:16spa
code
catch - 执行脚本并捕获错误ip
catch script ?resultVarName? ?optionsVarName?it
catch命令用来防止出现错误而致使脚本执行终止,catch命令能够调用Tcl解释器去执行脚本,而且可以正常返回。io
若是脚本产生一个错误,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命令。error
当返回TCL_ERROR时,三个额外的条目将会添加到optionsVarName中:-errorinfo、-errorcode和-errorline,-errorinfo条目是产生错误的信息,-errorcode条目是关于错误的一些额外信息,存储为列表方式,-errorline指出了错误发生的位置。-errorinfo和-errorcode条目都是最近发生的错误而且可使用::errorInfo和::errorCode。脚本
catch命令能够在if命令中使用。异常
if { [catch {open $someFile w} fid] } {
puts stderr "Could not open $someFile for writing/n$fid"
exit 1
}
在return命令中有更多的关于catch的示例。