如何解决在tcl脚本中的任何tcl错误上添加回调命令?
| 是否可以在tcl脚本中针对错误指定用户定义的命令? 如果出现任何错误,我想清理内存。我知道最后一个错误保存在errorInfo变量中。解决方法
您还可以定义bgerror过程并将代码作为后台任务调用:
proc bgerror { msg } {
puts \"bgerror:$msg\"
# Cleanup code here
}
proc troubleCode { } {
adjsad s ahda
}
after 1 troubleCode
,尚不清楚您真正想要什么。
您可以使用catch
命令捕获任何错误。如果您需要它在顶层工作,则可以在evaluate1ѭ下评估脚本的其余部分,例如
catch {
source ./the_rest_of_the_code.tcl
} err
对于异步程序(那些使用事件循环,包括Tk的程序),它并不那么容易,因为可能在回调中引发意外错误。要解决这些问题,请查看“ 4”命令。
,另一种选择是在步距模式下使用执行跟踪,该模式可让您测试每个命令执行是否失败并确定发生命令时该怎么办。 (这很像您可以对AOP中某些类型的方面执行的操作。)
proc doIt {} {
namespace eval :: {
# Your real code goes in here
}
}
trace add execution doIt leavestep {::apply {{cmd cmdArgs code result op} {
if {$code == 1} {#0 == ok,1 == error
puts \"ERROR >>$result<< from $cmdArgs\"
}
}}}
doIt
不过,它非常慢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。