在阅读多重引用中的 catch 时,所有示例似乎都是非常简单的单行句,例如:
if { [catch {...} result] } {
# Handle error
}
如果剧本复杂一点怎么办? catch 结果将是脚本的结果(最后一行,出现)而不是
catch
本身的返回。您是否使用 return 0 -level 0
来使 0
成为脚本的结果(如果您不需要以这种方式获取脚本结果)或测试 [dict get $catchDict -code]
?捕获多行代码的错误的正确方法是什么?
感谢您考虑我的问题。
catch {
# A few lines of code.
return 0 -level 0
} catchResult catchDict
if { $catchResult } {
# Handle error.
}
# OR
if { [dict get $catchDict -code] } {
# Handle error.
}
如果没有捕获到错误,
result
将获得代码计算的值。如果发现错误,result
将收到错误消息。所以通常你所需要的只是
if {[catch {
# A few lines of code.
} result]} {
# Handle error, e.g. puts stderr $result
} else {
# do something with result
}