L'exception Eiffel ne fonctionne pas
-
21-12-2019 - |
Question
J'essaie d'utiliser une exception comme dans la classe ci-dessous, mais le programme échoue toujours lorsque j'appelle le kivetel
méthode.Je pense qu'il suffira d'appeler une nouvelle tentative, puis de satisfaire la postcondition.Mais il échoue avec la violation post-cond "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
La solution
C'est le comportement attendu lorsque vous l'exécutez sous EiffelStudio, c'est-à-dire sous le débogueur.Si vous le lancez dehors...depuis la console par exemple, vous ne remarquerez rien, l'exécution passera par la clause de sauvetage et réessayera et continuera comme prévu.
Mais sous le débogueur, chaque fois qu'il y a une violation d'assertion ou une exception, le débogueur l'attrapera et affichera la boîte de dialogue.
(notez qu'il est possible d'ignorer un type spécifique d'exception, si cela vous dérange vraiment).