Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5
Java ist auch eine Insel

Java ist auch eine Insel
5., akt. und erw. Auflage
1454 S., mit CD, 49,90 Euro
Galileo Computing
ISBN 3-89842-747-1
gp Kapitel 7 Exceptions
  gp 7.1 Problembereiche einzäunen
    gp 7.1.1 Exceptions in Java mit try und catch
    gp 7.1.2 Eine Datei auslesen mit RandomAccessFile
    gp 7.1.3 Ablauf einer Ausnahmesituation
    gp 7.1.4 Wiederholung kritischer Bereiche
    gp 7.1.5 throws im Methodenkopf angeben
    gp 7.1.6 Abschließende Arbeiten mit finally
    gp 7.1.7 Nicht erreichbare catch-Klauseln
  gp 7.2 Die Klassenhierarchie der Fehler
    gp 7.2.1 Die Exception-Hierarchie
    gp 7.2.2 Oberausnahmen fangen
    gp 7.2.3 Alles geht als Exception durch
    gp 7.2.4 RuntimeException muss nicht aufgefangen werden
    gp 7.2.5 Harte Fehler: Error
  gp 7.3 Werfen eigener Exceptions
    gp 7.3.1 Mit throw Ausnahmen auslösen
    gp 7.3.2 Typecast auf ein null-Objekt für eine NullPointerException
    gp 7.3.3 Neue Exception-Klassen definieren
    gp 7.3.4 Geschachtelte Ausnahmen
  gp 7.4 Rückgabewerte bei ausgelösten Ausnahmen
  gp 7.5 Der Stack Trace
    gp 7.5.1 Stack Trace aus Throwable
    gp 7.5.2 Stack Trace aus Thread
  gp 7.6 Assertions
    gp 7.6.1 Assertions in Java
    gp 7.6.2 Assertions in eigenen Programmen nutzen
    gp 7.6.3 Assertions aktivieren


Galileo Computing

7.6 Assertions  downtop

Änderungen in der Sprache Java gab es immer wieder. In Java 1.1 wurden innere Klassen eingeführt, in Java 1.3 das Schlüsselwort strict, in Java 1.4 das Schlüsselwort assert und in Java 5 neben weiteren Änderungen auch Aufzählungen mit enum.


Galileo Computing

7.6.1 Assertions in Java  downtop

Die Übersetzung des englischen Worts »assertion« zeigt die Bedeutung dieses Sprachkonstrukts: Behauptungen. Mit diesen werden innerhalb von Methoden Zusicherungen (Vor- und Nachbedingungen) aufgestellt, die deren korrekten Ablauf garantieren sollen. Ist eine Bedingung nicht erfüllt, wird ein Fehler ausgelöst, der darauf hinweist, dass im Programm etwas falsch gelaufen sein muss. Die ausgelösten Fehler sind vom Typ »Error« und nicht vom Typ »Exception« und sollten daher auch nicht aufgefangen werden, da eine nicht erfüllte Bedingung ein Programmierfehler ist.


Galileo Computing

7.6.2 Assertions in eigenen Programmen nutzen  downtop

Assertions werden im Java-Quellcode mit folgender Anweisung benutzt:

assert AssertConditionExpression [:MessageExpression];

AssertConditionExpression steht für eine Bedingung, die zur Laufzeit ausgewertet wird. Wertet sich das Ergebnis zu true aus, führt die Laufzeitumgebung die Abarbeitung normal weiter, ergibt die Auswertung false, wird das Programm beendet. Der optionale zweiter Parameter MessageExpression ist ein Text, der beim Stack-Trace als Nachricht in der Fehlermeldung erscheint.


Beispiel   Eine Methode div() muss eine Zahl ungleich null bekommen. Sollte irgendein Programmteil fehlerhaft sein und den Divisor doch mit null belegen, muss ein Assert-Error erfolgen.

Listing 7.15   AssertKeyword.java

public class AssertKeyword
{
  public static int div( int divident, int divisor )
  {
    assert divisor != 0 : "Oh bitte keine Zahl durch null teilen.";
    return divident/divisor;
  }
  public static void main( String[] args )
  {
    System.out.println( "Quotient ist " + div(10, 2) );
    System.out.println( "Quotient ist " + div(10, 0) );
  }
}


Galileo Computing

7.6.3 Assertions aktivieren  toptop

Ein aktueller Java-Compiler übersetzt das Beispiel ohne Fehler, doch zur Laufzeit werden die Assertions standardmäßig nicht beachtet, da sie abgeschaltet sind. Somit entsteht kein Geschwindigkeitsverlust bei der Ausführung der Programme. Um Assertions zu aktivieren, muss die Laufzeitumgebung mit dem Schalter –ea (enable assertions) gestartet werden.


Beispiel   Starte AssertKeyword mit Zusicherungen.
$ javaea AssertKeyword
Die Ausgabe ist dann:
Quotient ist 5
Exception in thread "main" java.lang.AssertionError: Oh bitte keine Zahl durch Null teilen.
        at AssertKeyword.div(AssertKeyword.java:5)
        at AssertKeyword.main(AssertKeyword.java:14)

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 7.1   Wurde das Programm schon gestartet, kann im Menü Run/Run... im Reiter Arguments bei den VM arguments der Schalter -ea gesetzt werden.

 << zurück




Copyright © Galileo Press GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de