Java Assert!= null?
Hallo ich wollte nur kurz fragen was assert ist. Ist
assert permission != null;
town[1] = permission;
das selbe wie
if (permission != null) {
town[1] = permission;
}
Und dann gild das auch für alles dadrunter?
4 Antworten
Hey,
schau dir mal das an, hier wird erklärt was genau assert macht und wieso es besser als eine if-Verzweigung ist.
https://dbs.cs.uni-duesseldorf.de/lehre/docs/java/javabuch/html/k100044.html
Mfg Jannick (L1nd)
assert prüft, ob sich ein Ausdruck zu true auswertet. Sollte dies der Fall sein, wird das Programm ganz normal fortgesetzt. Andernfalls bricht es mit einem AssertionError ab.
Assertions lassen sich beim Ausführen ein- und ausschalten (Parameter -ea) und sollten daher nur für Debugging-/Testing-Zwecke eingesetzt werden.
Dementsprechend kann man Assertions, wie der Name schon sagt, für Annahmen verwenden, die immer wahr sein müssten. Wenn sie mal nicht wahr sind, weiß man, dass ein Logikfehler im eigenen Code vorliegt.
Fehler, mit denen dagegen durchaus zu rechnen ist (z. B. Fehler zur Laufzeit, aber auch Fehler beim Aufruf einer Methode durch Fremdcode), sollten niemals mit Assertions behandelt werden, sondern bspw. mit if-Abfragen und Exceptions. Sind Assertions deaktiviert, muss das Programm inkl. Fehlerbehandlung vollumfänglich funktionieren. Assertions sind also nur interne, für das Programm an sich nicht erforderliche Anweisungen.
Übrigens wird man in der Praxis Assertions nicht pur verwenden, sondern eher ein Testing-Framework wie JUnit nutzen. Dieses vereinfacht das Schreiben von Unit-Tests und ermöglicht zudem die saubere Trennung vom eigentlichen Code.
assert ist eine Abfrage für Tests.
Wenn ein assert "false" ist, gilt der Test als fehlgeschlagen.
Der Code darunter wird immer ausgeführt.
assertions sind bestimmte dinge die der programmierer von seinem programm erwartet
assertions kommen in java mit dem assert keyword vor
nach dem keyword drückt der programmierer seine erwartung in boolean-logik aus
also wenn der boolean zu false evaluiert, ist die annahme falsch
technisch gesehen schmeißt das programm ein fehler (wenn du deine laufzeit auf assertions eingestellt hast mit -ea)
für den programmierer heißt das, dadurch dass seine erwartung nicht erfüllt wurde, signalisiert die assertion, dass das programm einen bug hat