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
¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top