Tcl error
命令将指定的消息写入stderr
,并在其中添加前缀“Error:”。
是否可以使用“ERROR:”或“MyError:”等其他内容更改该前缀?
答案 0 :(得分:3)
error
命令本身不会向Tcl结果以外的任何地方写入任何内容。 实际所做的是抛出异常(类型为“error”; C API级别为TCL_ERROR)。以“Error:
”为前缀的代码只是标准的回退处理程序,但您可以使用自己的主脚本使用catch
来捕获任何结果并决定如何处理它(或者从8.6开始,try …
,在捕获特定问题时更容易使用。)
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
}
结果词典中有很多其他有趣的东西,你可能会或可能不会对它感兴趣。有一个可以解决的问题。