Frage

Ich versuche, eine Ausnahme wie in der folgenden Klasse zu verwenden, aber das Programm schlägt immer fehl, wenn ich das aufrufe kivetel Methode.Ich würde denken, dass es nur einen Wiederholungsteil aufruft, um dann die Nachbedingung zu erfüllen.Es schlägt jedoch mit der Postcond-Verletzung „y_above_zero“ fehl.

class
KEYWORDS
create
    make
feature
    y:INTEGER

make
do
end

kivetel
do
ensure
    y__above_zero: y > 0
rescue
    y := 20
    retry
end
end
War es hilfreich?

Lösung

Dies ist das erwartete Verhalten, wenn Sie es unter EiffelStudio ausführen, d. h. unter dem Debugger.Wenn Sie es draußen laufen lassen ...Von der Konsole aus werden Sie beispielsweise nichts bemerken, die Ausführung durchläuft die Rettungsklausel und versucht es erneut und wird wie erwartet fortgesetzt.

Aber unter dem Debugger erkennt der Debugger jedes Mal, wenn eine Assertionsverletzung oder eine Ausnahme auftritt, diese und öffnet den Dialog.

(Beachten Sie, dass es möglich ist, bestimmte Arten von Ausnahmen zu ignorieren, wenn Sie das wirklich stört.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top