当我运行下面的TCL代码时,我得到了第一次服务调用的成功输出,即。
“结果= xyz”
但是,第二个服务调用执行该服务,并且该服务返回错误,因为我们在if循环中输入了该错误,但是它不打印服务调用返回的错误消息,而只显示一个空字符串。
proc serviceCall {prefix} {
return [mimic.list :prefix $prefix]
}
puts "###### Svc Call With prefix set to Single Char ################## \n"
if {[catch {puts "Result = [serviceCall \"l\"]"} errmsg]} {
puts "ErrorMsg: $errmsg\n"
}
puts "\n\n###### Svc Call With prefix set to space ################## \n"
if {[catch {puts "Result = [serviceCall \"\ \" ]"} errmsg]} {
puts "ErrorMsg: $errmsg\n"
}
答案 0 :(得分:1)
您可能希望使用try
而不是catch
,并使用较少的反斜杠(除非您打算向proc发送带有文字引号的3个字符串)
puts "###### Svc Call With prefix set to Single Char ################## \n"
try {
puts "Result = [serviceCall "l"]"
} on error errmsg {
puts "ErrorMsg: $errmsg"
}