埃菲尔异常无法正常工作

Fer*_*jka 0 eiffel exception rescue post-conditions

我正在尝试使用下面的类中的异常,但是当我调用该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
Run Code Online (Sandbox Code Playgroud)

小智 5

在EiffelStudio(即调试器)下运行它时,这是预期的行为。如果您在外部运行它(例如从控制台运行),您将不会注意到任何事情,执行将通过救援子句并重试并按预期继续。

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

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