Я пытаюсь использовать исключение, как в приведенном ниже классе, но программа всегда терпит неудачу, когда я вызываю метод kivetel
. Я думаю, что он просто назовет часть повтора, чем удовлетворит постусловие. Но он не работает с нарушением postcond «y_above_zero».Eiffel exception not work
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 (но я уверен, что это то же самое с предыдущими выпусками) – Jocelyn