2014-01-09 97 views
0

我試圖在下面的類中使用類似的異常,但當我調用kivetel方法時程序總是失敗。我認爲它只會叫重試部分,而不會滿足後置條件。但是它會因「y_above_zero」第二次違規而失敗。Eiffel異常不起作用

​​
+0

它是你運行的確切代碼嗎?我剛剛檢查過,並且如預期那樣對我有效。 –

+0

是的,這是我的班級的代碼 –

+0

我想知道,你在EiffelStudio下運行它嗎? 如果是,那麼調試器將捕獲違反後置條件並將彈出一個對話框來中斷,繼續或忽略。 如果您選擇「繼續」,則應繼續執行而不會再次提升後置條件。 我剛剛檢查了EiffelStudio 13.11(但我確定它與以前的版本相同) – Jocelyn

回答

4

這是您在EiffelStudio下運行時,即在調試器下的預期行爲。 如果您從控制檯之外...例如在控制檯之外運行它,您將不會注意到任何事情,執行將通過救援條款並重試並按預期繼續。

但是在調試器中,任何時候有斷言違例或異常,調試器都會捕獲它並彈出對話框。

(注意這可以忽略特定類型的異常,如果這真的困擾你)。

+0

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

+0

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

+0

EiffelStudio有一種方法,告訴調試器忽略異常。 Manu 執行>異常處理... – Jocelyn