TCL返回命令有哪些选项?我可以看-code -errorcode -errorinfo作为return命令的选项..但是无法理解它们之间的区别。
proc new {} {
set name george
puts "Hello $name"
return -code ok
}
puts [new]
这里我没有得到任何输出,它就像正常的返回命令。但是可以在返回命令中为-code获得更多选项,如break,continue,error以及retun ...这个选项的用途是什么。 而且下面的代码让我感到困惑..
proc new {} {
set name george
puts "Hello $name"
return -code return -code return -code return
}
就像我们可以提供更多,它没有得到错误,这个选项的用途是什么..
答案 0 :(得分:2)
return
的选项列在手册页上:return。
-errorcode
,-errorinfo
,-errorstack
和-level
用于描述异常的各个方面:-options
允许用户传递异常数据字典对命令。在您彻底了解该语言并编写高级异常处理代码之前,这些都不可能对您有用。
-code
选项用于指定代码需要执行的处理类型。 ok
表示不需要特殊处理,并且命令的结果是有效数据; error
表示需要catch
或try
处理程序或程序结束,并且命令的结果是错误消息。 break
和continue
需要一个封闭的循环命令(或带有适当处理程序子句的catch
/ try
命令)。 return
使得使用它的命令的行为类似于return
命令。除非您编写自己的控制结构,否则您可能不需要处理此选项。
-level
选项还允许return
命令返回到调用者之外的其他位置(但仍在调用堆栈中)。如果值为0,则返回操作“就位”:return
将自行返回,而不终止它所属的脚本。
set foo [return -level 0 bar]
puts {I'm still alive}
将以set foo bar
执行,评估将继续puts
命令。 -level 1
表示返回调用者(通常的行为),-level 2
表示返回调用者的调用者,依此类推。
return命令接受其参数列表中的任何内容,并且许多命令都不会抱怨重复的参数。 return -code return -code return -code return
与return -code return
完全相同。