-
21-12-2019 - |
题
我正在尝试使用像下面的类中那样的异常,但是当我调用 kivetel
方法。我认为它只会调用重试部分,而不是满足后置条件。但它因“y_above_zero”后条件违规而失败。
class
KEYWORDS
create
make
feature
y:INTEGER
make
do
end
kivetel
do
ensure
y__above_zero: y > 0
rescue
y := 20
retry
end
end
解决方案
这是在 EiffelStudio 下(即在调试器下)运行它时的预期行为。如果你在外面运行它...例如,从控制台,您不会注意到任何事情,执行将通过救援子句并重试并按预期继续。
但在调试器下,只要出现断言冲突或异常,调试器就会捕获它并弹出对话框。
(请注意,如果这确实困扰您,则可以忽略特定类型的异常)。
不隶属于 StackOverflow