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
Était-ce utile?

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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top