Tcl 如何获取代码行编号和错误信息?
我正在使用以下TCL代码:Tcl 如何获取代码行编号和错误信息?,tcl,Tcl,我正在使用以下TCL代码: proc RunCSM { scen } { catch { $scen start } if { "[$scen status]" != "SUCCESS" } { puts "$scen FAILED. Error Info:" puts "[$scen errorInfo]" ... 问题是,在这种情
proc RunCSM { scen } {
catch { $scen start }
if { "[$scen status]" != "SUCCESS" } {
puts "$scen FAILED. Error Info:"
puts "[$scen errorInfo]" ...
问题是,在这种情况下,如果有错误,它会显示错误信息调试信息作为errorInfo标志的输出,但在这种情况下,我还需要失败代码的行号。这是怎么可能的?从8.5版开始,最简单的方法是切换到catch形式,它允许您在脚本之后的第二个可选参数的opt变量中以字典的形式获取扩展结果信息:
catch { $scen start } msg opt
if { "[$scen status]" ne "SUCCESS" } { # use 'ne' to compare strings, please
set info [dict get $opt -errorinfo]
set line [dict get $opt -errorline]
puts "$scen FAILED saying '$msg' at $line. Error Info:"
puts $info
# ...
}
从8.5版开始,最简单的方法是切换到catch格式,该格式允许您在下面的opt变量(位于脚本之后的第二个可选参数)中以字典的形式获取扩展结果信息:
catch { $scen start } msg opt
if { "[$scen status]" ne "SUCCESS" } { # use 'ne' to compare strings, please
set info [dict get $opt -errorinfo]
set line [dict get $opt -errorline]
puts "$scen FAILED saying '$msg' at $line. Error Info:"
puts $info
# ...
}
你可以试着解析错误信息,但是8.4现在非常过时,而且不受支持,顺便说一句。我们让进入8.5变得更容易…你可以试着解析错误信息,但是8.4现在非常过时,而且不受支持,顺便说一句。我们让进入8.5变得更容易…