Java-Assertionsfrage

8

Was passiert genau, wenn eine Java-Assertion fehlschlägt? Wie erfährt der Programmierer, dass eine Assertion fehlgeschlagen ist?

Danke.

    
Student 16.04.2011, 16:51
quelle

7 Antworten

4

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.

    
Simon Nickerson 16.04.2011, 16:57
quelle
4

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:

%Vor%

Behauptungen sollten nur zur Erkennung von Programmierfehlern verwendet werden. Wenn Sie Benutzereingaben oder etwas in diesen Zeilen überprüfen, verwenden Sie keine Assertions.

    
Ravi Wallau 16.04.2011 16:58
quelle
2

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 .

    
QuantumMechanic 16.04.2011 17:00
quelle
1

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

    
Thomas Jungblut 16.04.2011 16:57
quelle
1

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.

    
Larry Watanabe 16.04.2011 16:59
quelle
0

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.

%Vor%

ist wie

%Vor%

Wenn Sie Ihr Programm mit dem -ea -Flag ausführen, das an das Java-Programm (VM) übergeben wurde.

    
no_ripcord 16.04.2011 16:57
quelle
0

Der Programmierer kann try catch block schreiben. Wenn also ein Fehler aufgetreten ist, kann er gefangen werden und der Programmierer kann

davon erfahren %Vor%     
Nikhil 10.07.2016 05:31
quelle

Tags und Links