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

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Exceptions
7 Generics<T>
8 Äußere.innere Klassen
9 Besondere Klassen der Java SE
10 Architektur, Design und angewandte Objektorientierung
11 Die Klassenbibliothek
12 Bits und Bytes und Mathematisches
13 Datenstrukturen und Algorithmen
14 Threads und nebenläufige Programmierung
15 Raum und Zeit
16 Dateien, Verzeichnisse und Dateizugriffe
17 Datenströme
18 Die eXtensible Markup Language (XML)
19 Grafische Oberflächen mit Swing
20 Grafikprogrammierung
21 Netzwerkprogrammierung
22 Verteilte Programmierung mit RMI
23 JavaServer Pages und Servlets
24 Datenbankmanagement mit JDBC
25 Reflection und Annotationen
26 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort
Ihre Meinung?

Spacer
 <<   zurück
Java ist auch eine Insel von Christian Ullenboom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
geb., mit DVD
1482 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1506-0
Pfeil 6 Exceptions
  Pfeil 6.1 Problembereiche einzäunen
    Pfeil 6.1.1 Exceptions in Java mit try und catch
    Pfeil 6.1.2 Eine NumberFormatException auffangen
    Pfeil 6.1.3 Ablauf einer Ausnahmesituation
    Pfeil 6.1.4 Eigenschaften vom Exception-Objekt
    Pfeil 6.1.5 Wiederholung abgebrochener Bereiche *
    Pfeil 6.1.6 Mehrere Ausnahmen auffangen
    Pfeil 6.1.7 throws im Methodenkopf angeben
    Pfeil 6.1.8 Abschlussbehandlung mit »finally«
  Pfeil 6.2 Die Klassenhierarchie der Fehler
    Pfeil 6.2.1 Die Exception-Hierarchie
    Pfeil 6.2.2 Oberausnahmen auffangen
    Pfeil 6.2.3 Alles geht als Exception durch
    Pfeil 6.2.4 Zusammenfassen gleicher catch-Blöcke
  Pfeil 6.3 RuntimeException muss nicht aufgefangen werden
    Pfeil 6.3.1 Beispiele für RuntimeException-Klassen
    Pfeil 6.3.2 Kann man abfangen, muss man aber nicht
  Pfeil 6.4 Harte Fehler: Error *
  Pfeil 6.5 Auslösen eigener Exceptions
    Pfeil 6.5.1 Mit throw Ausnahmen auslösen
    Pfeil 6.5.2 Vorhandene Runtime-Fehlertypen kennen und nutzen
    Pfeil 6.5.3 Parameter testen und gute Fehlermeldungen
    Pfeil 6.5.4 Neue Exception-Klassen deklarieren
    Pfeil 6.5.5 Eigene Ausnahmen als Unterklassen von Exception oder RuntimeException?
    Pfeil 6.5.6 Abfangen und weiterleiten *
    Pfeil 6.5.7 Geschachtelte Ausnahmen *
  Pfeil 6.6 Assertions *
    Pfeil 6.6.1 Assertions in eigenen Programmen nutzen
    Pfeil 6.6.2 Assertions aktivieren


Rheinwerk Computing - Zum Seitenanfang

6.6 Assertions *  Zur nächsten ÜberschriftZur vorigen Überschrift

Die Übersetzung des englischen Worts »assertion« lässt vermuten, worum es geht: um Behauptungen. Mit diesen werden innerhalb von Methoden Zusicherungen (Vor- und Nachbedingungen) aufgestellt, die den korrekten Ablauf der Methode 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.


Java-Geschichte Ä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 für die »Behauptungen« und in Java 5 gab es neben weiteren Änderungen auch Aufzählungen mit dem eingeführten Schlüsselwort enum.



Rheinwerk Computing - Zum Seitenanfang

6.6.1 Assertions in eigenen Programmen nutzen  Zur nächsten ÜberschriftZur vorigen Überschrift

Assertions werden im Java-Quellcode mit der assert-Anweisung benutzt. Es gibt zwei Varianten, eine mit und eine ohne Meldung:

assert AssertConditionExpression;
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 mit einem java.lang.AssertionError beendet. Der optionale zweite Parameter, MessageExpression, ist ein Text, der beim Stack-Trace als Nachricht in der Fehlermeldung erscheint.

Formulieren wir ein Beispiel: Eine eigene statische Methode subAndSqrt(double, double) bildet die Differenz zweier Zahlen und zieht aus dem Ergebnis die Wurzel. Natürlich weiß jeder Entwickler, dass die Wurzel aus negativen Zahlen nicht erlaubt ist, aber dennoch ginge so etwas in Java durch, nur das Ergebnis ist eine NaN. Sollte irgendein Programmteil nun die Methode subAndSqrt() mit einem falschen Paar Zahlen aufrufen und das Ergebnis NaN sein, muss ein Assert-Error erfolgen, da es einen internen Programmfehler zu korrigieren gilt:

Listing 6.19  com/tutego/insel/assertion/AssertKeyword.java

package com.tutego.insel.assertion;

public class AssertKeyword
{
  public static double subAndSqrt( double a, double b )
  {
    double result = Math.sqrt( a – b );

    assert ! Double.isNaN( result ) : "Berechnungsergebnis ist NaN!";

    return result;
  }

  public static void main( String[] args )
  {
    System.out.println( "Sqrt(10-2)=" + subAndSqrt(10, 2) );
    System.out.println( "Sqrt(2-10)=" + subAndSqrt(2, 10) );
  }
}

Rheinwerk Computing - Zum Seitenanfang

6.6.2 Assertions aktivieren  topZur vorigen Überschrift

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.

$ java –ea AssertKeyword

Die Ausgabe ist dann:

Sqrt(10-2)=2.8284271247461903
Exception in thread "main" java.lang.AssertionError: Berechnungsergebnis ist NaN!
  at com.tutego.insel.assertion.AssertKeyword.subAndSqrt(AssertKeyword.java:9)
  at com.tutego.insel.assertion.AssertKeyword.main(AssertKeyword.java:17)

Abbildung 6.5  Wurde das Programm in Eclipse schon gestartet, kann im Menü »Run • Run ...« auf dem Reiter »Arguments« bei den »VM arguments« der Schalter »-ea« gesetzt werden.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Einstieg in Eclipse






 Einstieg in
 Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in
 Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2011
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de