gpt4 book ai didi

error-handling - TCL,在catch命令中获取完整的错误消息

转载 作者:行者123 更新时间:2023-12-03 07:47:44 32 4
gpt4 key购买 nike

#!/usr/bin/tclsh     

proc test {} {
aaa
}

test

当我运行此脚本时,出现错误消息:
invalid command name "aaa"
while executing
"aaa"
(procedure "test" line 2)
invoked from within
"test"
(file "./a.tcl" line 7)

如果我在 catch中运行测试命令,则只会得到第一行错误消息。
#!/usr/bin/tclsh

proc test {} {
aaa
}

catch test msg
puts $msg

打印: invalid command name "aaa"
是否可以在catch命令中获取完整的错误消息(文件,行,过程)?我的程序有许多文件,并且仅收到一行错误消息,很难从哪里找到它。

最佳答案

简短的答案是查看errorInfo的值,该值将包含堆栈跟踪。

更完整的答案是查看catchreturn手册页,并在-optionsVarName语句中使用catch参数来收集所提供的更详细的信息。 return手册页提供了有关使用此信息的一些信息。但是一个交互式 session 的一个粗略示例:

% proc a {} { catch {funky} err detail; return $detail }
% a
-code 1 -level 0 -errorstack {INNER {invokeStk1 funky} CALL a} -errorcode NONE -errorinfo {invalid command name "funky"
while executing
"funky"} -errorline 1
%
detail变量是一个字典,因此请使用 dict get $detail -errorinfo获取该特定项。

关于error-handling - TCL,在catch命令中获取完整的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30212736/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com