我正在尝试使用像下面的类中那样的异常,但是当我调用 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 下(即在调试器下)运行它时的预期行为。如果你在外面运行它...例如,从控制台,您不会注意到任何事情,执行将通过救援子句并重试并按预期继续。

但在调试器下,只要出现断言冲突或异常,调试器就会捕获它并弹出对话框。

(请注意,如果这确实困扰您,则可以忽略特定类型的异常)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top