assert in Java (assert in Java), Lektion, Seite 722560
https://www.purl.org/stefan_ram/pub/assert_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

assert-Anweisungen (Annahmen) in Java 

Einführendes Beispiel

Eine Annahme bricht das Programm mit einer Fehlermeldung ab, wenn ihr Ausdruck den Wert false hat.

Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{ assert false; }}

Konsole

Exception in thread "main" java.lang.AssertionError
at Main.main(Main.java:3)

⚠ Bei einigen Entwicklungsumgebungen muß die Ausführung solcher Abbrüche erst freigeschaltet  werden. Falls das obenstehende Programm keine Laufzeitfehlermeldung ausgibt, so liegt dies vermutlich daran, daß die Ausführung solcher Abbrüche noch nicht freigeschaltet wurde. Das dafür zu verwendende Verfahren hängt von der verwendeten Entwicklungsumgebung ab und ist in der Bedienungsanleitung der Entwicklungsumgebung beschrieben.

Einleitung

Durch eine assert-Anweisung (Annahmeanweisung, kurz: Annahme) kann die Wahrheit einer Aussage festgehalten werden.

Die assert-Anweisung veranlaßt den Abbruch des Prozesses, falls ihre Aussage (Annahmeausdruck, kurz: Annahme) falsch sein sollte. So können Annahmen, welche der Programmierer macht, also Erwartungen des Programmierers, auf verständliche Weise festgehalten und auf wirkungsvolle Weise überprüft werden.

Syntax

     .''''''.     .----------.         .-.     .----------.         .-.
--->( assert )--->| Ausdruck |---.--->( : )--->| Ausdruck |---.--->( ; )--->
'......' '----------' | '-' '----------' ^ '-'
| |
'----------------------------'

assert ist ein Schlüsselwort.

Typanforderungen (vereinfacht)

Der erste Ausdruck muß den Typ »boolean« haben. Der Metatyp des zweiten Ausdrucks darf nicht »void« sein.

Striktheit (vereinfacht)

Der erste Ausdruck wird immer  ausgewertet. Der zweite Ausdruck nur, falls der erste false war.

Semantik (vereinfacht)

Falls der Wert des ersten Ausdrucks false ist und die Prüfung von Annahmen in der Entwicklungsumgebung freigeschaltet wurde, wird das Programm mit einer Fehlermeldung abgebrochen.

Falls ein zweiter Ausdruck angegeben ist, so erscheint dessen Wert dann gegebenenfalls in der ausgegebenen Fehlermeldung.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ assert false: "alpha"; }}
Konsole
Exception in thread "main" java.lang.AssertionError: alpha
at Main.main(Main.java:35)

Erkennen der Inkraftsetzung

Das folgende Beispiel erlaubt es zu erkennen, ob die Prüfung von assert-Anweisungen in der Entwicklungsumgebung freigeschaltet (aktiviert) wurde.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ boolean enabled = false;
assert enabled = true;
java.lang.System.out.println
( "assert-Pruefungen sind " +( enabled ? "" : "nicht " )+ "aktiviert." ); }}
java.lang.System.out

assert-Pruefungen sind aktiviert.

Platform.isFxApplicationThread();

Beispiel

Zugriffe auf JavaFX -Objekte sind nur auf dem FX-Anwendungs-Prozessor (FX application thread ) erlaubt. Die folgende Anweisung kann in einer Methode verwendet werden, um sicherzustellen, daß die Methode auch wirklich auf dem Anwendungsprozessor läuft.

Anweisung
assert javafx.Platform.isFxApplicationThread(); 
Main.java
public final class Main extends javafx.application.Application
{ public void start( final javafx.stage.Stage window )
{ assert javafx.application.Platform.isFxApplicationThread():
"javafx.application.Platform.isFxApplicationThread()";
java.lang.System.exit( 0 ); }}
transcriptMain.java
class Main
{ public static void main( final java.lang.String[] args )
{ assert javafx.application.Platform.isFxApplicationThread():
"javafx.application.Platform.isFxApplicationThread()";
java.lang.System.exit( 0 ); }}
transcript
Exception in thread "main" java.lang.AssertionError: javafx.application.Platform.isFxApplicationThread()
at Main.main(Main.java:3)

Beispiel

switch( schulnote )
{ case 1: case 2: case 3: case 4: case 5: case 6: break;
default: assert false: "Can't happen."; break; }

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722560 stefan_ram:722560 assert in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722560, slrprddef722560, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/assert_java