2014-01-09 70 views
0

我试图在下面的类中使用类似的异常,但当我调用kivetel方法时程序总是失败。我认为它只会叫重试部分,而不会满足后置条件。但是它会因“y_above_zero”第二次违规而失败。Eiffel异常不起作用

​​
+0

它是你运行的确切代码吗?我刚刚检查过,并且如预期那样对我有效。 –

+0

是的,这是我的班级的代码 –

+0

我想知道,你在EiffelStudio下运行它吗? 如果是,那么调试器将捕获违反后置条件并将弹出一个对话框来中断,继续或忽略。 如果您选择“继续”,则应继续执行而不会再次提升后置条件。 我刚刚检查了EiffelStudio 13.11(但我确定它与以前的版本相同) – Jocelyn

回答

4

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

但是在调试器中,任何时候有断言违例或异常,调试器都会捕获它并弹出对话框。

(注意这可以忽略特定类型的异常,如果这真的困扰你)。

+0

好吧,所以程序很好,谢谢 –

+0

我希望有一种方法可以忽略捕捉到的异常。 –

+0

EiffelStudio有一种方法,告诉调试器忽略异常。 Manu 执行>异常处理... – Jocelyn