Error handling 如何使用catch将屏幕上的错误捕获到TCL中的变量中

Error handling 如何使用catch将屏幕上的错误捕获到TCL中的变量中,error-handling,tcl,catch-block,Error Handling,Tcl,Catch Block,在屏幕上显示错误,例如 puts $c #error on terminal : can't read "c": no such variable catch {puts $c} err puts $err # value of err 1 是否有任何方法可以捕获中的实际错误消息 TCL除了变量err中的信号之外。是。阅读::errorInfo或:errorCode全局变量以获得堆栈跟踪和相应的机器可解析“POSIX error”三元素列表 自Tcl 8.5以来,还可

在屏幕上显示错误,例如

   puts $c
   #error on terminal : can't read "c": no such variable

   catch {puts $c} err
   puts $err # value of err 1
是否有任何方法可以捕获中的实际错误消息
TCL除了变量err中的信号之外。

是。阅读
::errorInfo
:errorCode
全局变量以获得堆栈跟踪和相应的机器可解析“POSIX error”三元素列表

自Tcl 8.5以来,还可以在变量名之后将字典名传递给
catch
,以接收结果,并且该字典将填充许多可以通过我上面描述的“经典”错误变量获得的内容,等等


这些都在中进行了解释。

是。阅读
::errorInfo
:errorCode
全局变量以获得堆栈跟踪和相应的机器可解析“POSIX error”三元素列表

自Tcl 8.5以来,还可以在变量名之后将字典名传递给
catch
,以接收结果,并且该字典将填充许多可以通过我上面描述的“经典”错误变量获得的内容,等等

在tcl 8.6中,您甚至得到了命令,这也很有用。
try
的用法比看起来更简单(通常的
try{…}on error msg{put$msg}
)。还要注意的是,Tcl不像Java或.Net那样在展开时构建错误堆栈。在Tcl 8.6中,您甚至得到了命令,这也很有用。
try
的用法比看起来更简单(通常的
try{…}on error msg{put$msg}
)。还要注意的是,Tcl在展开时构建了不同于Java或.Net的错误堆栈。