簡體   English   中英

埃菲爾例外不起作用

[英]Eiffel exception not work

我正在嘗試使用如下類中的異常,但是當我調用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 下(即在調試器下)運行時的預期行為。 如果你在外面運行它......例如從控制台,你不會注意到任何東西,執行將通過救援子句並重試並按預期繼續。

但是在調試器下,只要有斷言違反或異常,調試器就會捕獲它並彈出對話框。

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

由於以下原因,顯示的示例不代表異常處理:

  1. do ... end塊中沒有引發異常
  2. 常規kivetel什么都不做,因此不能引發異常
  3. 例程kivetel不正確(它不滿足后置條件)。

所以基本上你的rescue塊沒有被調用,因為在例程中沒有引發觸發的異常(違反后置條件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM