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
.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top