2015-05-13 67 views
1
#!/usr/bin/tclsh  

proc test {} { 
    aaa 
} 

test 

當我運行該腳本,我得到錯誤信息:TCL,獲得完整的錯誤消息,在捕捉命令

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命令完整的錯誤信息(文件,行,程序)?我的程序有很多文件,只有一行錯誤信息很難從中找到。

回答

3

簡短的回答是查看將包含堆棧跟蹤的值errorInfo

的更完整的答案是看catchreturn手冊頁和利用-optionsVarName參數爲catch聲明的收集提供的更詳細的信息。 return手冊頁提供了一些使用此信息。但是從交互式會話一個粗略的例子:

% 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來獲取特定項目。

相關問題