Tcl error
命令将指定的消息写入 stderr
,并为其添加前缀“Error:”。
是否可以用“ERROR:”或“MyError:”等其他内容更改该前缀?
最佳答案
error
命令本身不会将任何内容写入 Tcl 结果以外的任何位置。它实际上所做的是抛出异常(类型为“错误”;C API 级别的 TCL_ERROR)。以“Error:
”为前缀的代码只是标准后备处理程序,但您可以通过让主脚本使用 catch
来使用自己的代码。捕获任何结果并决定如何处理它(或从 8.6 开始尝试...,这在捕获特定问题时更容易使用)。
if {[catch {source realscript.tcl} msg]} {
# Caught an error!
puts stderr "Oh noes! Teh errorz iz atakkin! $msg"
puts stderr $::errorInfo
exit 1
}
好的,如果您使用的是 8.5,那么更好的编写方法是:
if {[catch {source realscript.tcl} msg resultdict]} {
# Caught an error!
puts stderr "Oh noes! Teh errorz iz atakkin! $msg"
puts stderr [dict get $resultdict -errorinfo]
exit 1
}
结果字典中还有很多其他有趣的内容,您可能感兴趣也可能不感兴趣。看看吧。
关于exception - 如何更改Tcl错误前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8952147/