Wenn Assertionen in der JVM aktiviert sind (über das Flag -ea
), wird ein AssertionError
ausgelöst, wenn die Assertion fehlschlägt.
Dieses sollte nicht gefangen werden, denn wenn eine Behauptung scheitert, bedeutet das im Grunde eine Ihrer Annahmen darüber, wie das Programm funktioniert, ist falsch. Daher erfahren Sie in der Regel etwas über einen Assertionsfehler, wenn Sie eine Exception-Stack-Ablaufverfolgung erhalten, die mit dem Abschluss Ihres Threads (und möglicherweise des gesamten Programms) protokolliert wurde.
Eine Assertion schlägt nur fehl, wenn Sie in der JVM beim Start Assertionen aktiviert haben. Sie können dies tun, indem Sie in der Befehlszeile den Parameter -ea angeben. Wenn Sie das tun, dann wird dieser Code-Code einen AssertionError
werfen, wenn er ausgeführt wird:
Behauptungen sollten nur zur Erkennung von Programmierfehlern verwendet werden. Wenn Sie Benutzereingaben oder etwas in diesen Zeilen überprüfen, verwenden Sie keine Assertions.
Erzeugt eine AssertionError
, die eine Unterklasse von Error
ist. Als Error
im Allgemeinen und als fehlgeschlagene Assertion sollten Sie wahrscheinlich nicht versuchen, es zu fangen, da es Ihnen sagt, dass eine signifikante Abnormalität in Ihrem Code vorliegt und dass Sie wahrscheinlich in einem undefinierten, unsicheren Zustand sind .
Wenn eine Assertion fehlschlägt und die Assertion zur Laufzeit aktiviert ist, wird ein AssertionError . In der Regel verwenden Sie Assert-Anweisungen in JUnit-Tests. Wenn Sie Ihre Anwendung erstellen, führen Sie ein Test-Dienstprogramm aus, das nach Fehlern sucht und Sie darüber informiert.
Werfen Sie einen Blick darauf: Programmieren mit Behauptungen
Er wirft einen AssertionError. Wie auch immer, Sie müssen das Programm mit dem Flag -ea oder -enableassertions kompilieren, damit es eine tatsächliche Ausnahme generiert.
Erzeugt ein Error
. Es ist genau so, wenn Sie NullPointerException
erhalten, aber es ist eine Unterklasse von java.lang.Error
. Der Name lautet AssertionError
.
Es ist wie ein NullPointerException
in dem Sinne, dass Sie die Würfe oder irgendetwas nicht deklarieren müssen, es wird nur geworfen.
ist wie
%Vor% Wenn Sie Ihr Programm mit dem -ea
-Flag ausführen, das an das Java-Programm (VM) übergeben wurde.
Tags und Links java