【发布时间】:2014-01-09 11:56:15
【问题描述】:
我正在尝试使用下面类中的异常,但是当我调用 kivetel 方法时程序总是失败。我认为它只会调用重试部分,而不是满足后置条件。但它因“y_above_zero”postcond 违规而失败。
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 下运行它吗?如果是,则调试器将捕获后置条件违规并弹出一个对话框以中断、继续或忽略。如果您选择“继续”,则应继续执行而不再次提出后置条件。我刚刚检查了 EiffelStudio 13.11(但我确信它与以前的版本相同)
-
刚刚下载了 eiffel studio 就像 4 天前所以我有最新的我认为,我点击继续而不是确定不再失败,但这是正常的吗?我认为它不会丢弃任何错误消息,因为存在异常部分
-
使用条件而不是异常会更简洁:
kivetel do if y <= 0 then y:=20 end ensure y__above_zero: y > 0 end
标签: exception rescue eiffel post-conditions