La excepción Eiffel no funciona
-
21-12-2019 - |
Pregunta
Estoy intentando usar una excepción como en la clase siguiente, pero el programa siempre falla cuando llamo al kivetel
método.Creo que simplemente llamará a la parte de reintento, luego satisfará la poscondición.Pero falla con la violación posterior "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
Solución
Este es el comportamiento esperado cuando lo ejecuta en EiffelStudio, es decir, en el depurador.Si lo ejecutas afuera...desde la consola, por ejemplo, no notará nada, la ejecución pasará por la cláusula de rescate y volverá a intentarlo y continuará como se esperaba.
Pero bajo el depurador, cada vez que hay una violación de aserción o una excepción, el depurador la detectará y mostrará el cuadro de diálogo.
(tenga en cuenta que es posible ignorar un tipo específico de excepción, si esto realmente le molesta).