使用catch捕获错误

问题描述 投票:0回答:1

在阅读多重引用中的 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.
}

tcl
1个回答
0
投票

如果没有捕获到错误,

result
将获得代码计算的值。如果发现错误,
result
将收到错误消息。所以通常你所需要的只是

if {[catch {
  # A few lines of code.
} result]} {
  # Handle error, e.g. puts stderr $result
} else {
  # do something with result
}
© www.soinside.com 2019 - 2024. All rights reserved.