Tcl错误将标准错误信息添加到本地
如果使用不带参数的proc Name,如何将标准错误消息传递到本地消息 我想了解我自己的错误信息,而不是全局错误信息,如Tcl错误将标准错误信息添加到本地,tcl,Tcl,如果使用不带参数的proc Name,如何将标准错误消息传递到本地消息 我想了解我自己的错误信息,而不是全局错误信息,如 proc adder {a b} { global errorInfo puts "The stack trace was this:\n$errorInfo" puts "I got an error in an event: adder arguments $a $b" } -> 我需要上面的错误消息应该是“选择参数时出错,例如:adde
proc adder {a b} {
global errorInfo
puts "The stack trace was this:\n$errorInfo"
puts "I got an error in an event: adder arguments $a $b"
}
->
我需要上面的错误消息应该是“
选择参数时出错,例如:adder a b
”要使用过程获得自定义参数处理,请使用args
捕获所有参数,然后自己进行处理
proc adder {args} {
if {[llength $args] != 2} {
return -code error "Error in selecting arguments ex: adder a b"
}
lassign $args a b
# ...
}
如果您使用的是Tcl 8.4,请使用它而不是lassign$args a b
:
foreach {a b} $args break
(你可以用一个空的身体来代替
break
,但如果你的争论比你预期的要多,那么这是一个好习惯。因为llength
检查,这不会发生,但好习惯就是好习惯!)请解释你想要达到的目标。该命令不是直接执行的——它是由解释器调用的,解释器检测到脚本中的错误,该脚本是由解释器作为附加到某个事件源(例如“文件可读”或“用户单击按钮”)的回调执行的。手动调用此命令没有意义。但是如果你这样做了,就给它一个单独的参数——消息。在这个例子中,你能解释一下proc adder{{a”“}{b”“}args}{@user3069844,它将首先满足a
,然后满足b
,并且只有在这之后剩下的内容才会存储在args
foreach {a b} $args break