开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第43天,点击查看活动详情
QUIT将嵌套的TRY块退出到封闭块,并继续执行CATCH块的其余部分。
ClassMethod quit5()
{
try {
w "在TRY块中",!
s x = 5 / 0
w "此行不会显示"
}
catch exp {
w "在CATCH块中",!
w "Error Name: ",exp.Name,!
try {
w "在嵌套的TRY块中",!
q
}
catch exp1 {
w "在嵌套的CATCH块中",!
w "Error Name: ",exp1.Name,!
}
w "QUIT显示此外部CATCH块行",!
}
w "结束"
}
在Terminal下,QUIT n从程序堆栈中清除指定数量的级别。可以使用$STACK特殊变量来确定程序堆栈上的当前级别数。
DHC-APP>n
DHC-APP 1S1>n
DHC-APP 2N1>n
DHC-APP 3N1>q 1
DHC-APP 2N1>q 1
DHC-APP 1S1>q 1
DHC-APP>
在Terminal下,不带参数的QUIT从程序堆栈中清除所有级别。
DHC-APP>n
DHC-APP 1S1>n
DHC-APP 2N1>n
DHC-APP 3N1>q
DHC-APP>
隐式QUIT,当遇到带有参数的标签时,将执行隐式QUIT,与方法类似。
ClassMethod quit6(str)
{
if (str = "apple") {
d apple
} elseif (str = "banana"){
d banana
} else {
d other
}
q ""
apple w "apple",!
banana w "banana",!
other w "other",!
}
ClassMethod quit7(str)
{
if (str = "apple") {
d apple
} elseif (str = "banana"){
d banana
} else {
d other
}
q ""
apple() w "apple",!
banana() w "banana",!
other() w "other",!
}
注意:在每个例程标签的末尾执行一个隐式QUIT,也可以显式指定Quit以提高程序的可读性。
Retrun命令
RETURN:pc expression
Retrun命令用于终止方法的执行。在大多数情况下,与QUIT命令用法相同。在FOR、DO WHILE、WHILE循环命令与TRY-CATCH块中使用时,RETURN和QUIT有所不同。
ClassMethod Retrun1()
{
w "在主程序中",!
d sub
w "返回主程序",!
ret
sub
w "在sub",!
for i = 1 : 1 : 5 {
w i,!
if i = 3 ret
w "继续循环",!
}
w "在sub始终quit",!
q
}
Retrun在版本2010没有此命令,之后的版本才有。
Retrun命令在传统的For循环点语法中与Quit功能一样。
ClassMethod Retrun()
{
for i = 1 : 1 : 10 d
.ret:i=1
.w i,!
w !,"retrun结束循环",!
for i = 1 : 1 : 10 d
.quit:i=1
.w i,!
w !,"quit结束循环"
q
}
对比continue,quit,retrun在for循环中的不同。
continue退出本次循环。
quit退出循环。
retrun退出结束当前运行方法。
ClassMethod Retrun2()
{
for i = 1 : 1 : 5 {
w i,!
continue:(i=3)
w "继续循环",!
}
w !,"continue结束循环",!
for i = 1 : 1 : 5 {
w i,!
quit:(i=3)
w "继续循环",!
}
w !,"quit结束循环",!
for i = 1 : 1 : 5 {
w i,!
ret:(i=3)
w "继续循环",!
}
w !,"retrun结束循环",!
}
|