我是tcl的新手.有没有办法我们可以处理虽然在脚本中被调用但不存在的过程.我给你举个例子
假设这是我们的代码
package require 65ABC
package provide package1
65ABC::callingFunction param1 param2 (# this does not exist in 65ABC)
It will throw an error saying undefined command 65ABC::callingFunction
Run Code Online (Sandbox Code Playgroud)
如果我没记错,TCL但在其他语言中,在这些情况下有一个universal proc.这意味着在上面提到的场景中,当调用函数不存在时,它将进入一些通用过程,并执行在通用过程中编写的内容.假设我们可以打印一条消息,说"此proc不存在",或者我们可以做一些其他操作.
更新:添加catch命令不是一个选项.因为我大概有200个这样的过程.我想通过一个superproc来处理这些场景
您正在寻找的是unknown和/或namespace unknown命令.这些命令记录在这里:
这是一个简单的例子unknown:
% rename unknown _unknown ;# save reference to the original
% proc unknown {args} {
puts stderr "Hey, I don't know this command: $args"
uplevel 1 [list _unknown {*}$args]
}
% hello world
Hey, I don't know this command: hello world
invalid command name "hello"
Run Code Online (Sandbox Code Playgroud)
当然,您可以在此过程中执行任何操作 - 您可以记录信息,动态创建缺失过程,引发错误等等.