Tcl错误将标准错误信息添加到本地

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 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" 
}
->


我需要上面的错误消息应该是“
选择参数时出错,例如: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