Eiffel Eccezione non funziona
-
21-12-2019 - |
Domanda
Sto cercando di usare un'eccezione come nella classe sottostante, ma il programma non riesce sempre quando chiamo il metodo kivetel
.Penserei che chiamerà solo parte di tentativi, di quanto soddisferà la postcondition.Ma fallisce con "y_above_zero" la violazione della postazione.
class
KEYWORDS
create
make
feature
y:INTEGER
make
do
end
kivetel
do
ensure
y__above_zero: y > 0
rescue
y := 20
retry
end
end
. Soluzione
Questo è il comportamento previsto quando lo esegui con Eiffelstudio, I.e sotto il debugger. Se lo esegui all'aperto ... Dalla console, ad esempio, non noterai nulla, l'esecuzione passerà attraverso la clausola di soccorso e riproverà e continua come previsto.
Ma sotto Debugger, in qualsiasi momento c'è una violazione di asserzione o un'eccezione, il debugger lo prenderà e popup il dialogo.
(Nota È possibile ignorare il tipo specifico di eccezione, se questo ti sta davvero disturbando).