Einstieg in die Informatik mit Java

Ähnliche Dokumente
Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling)

Ausnahmen (Exceptions)

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

Grundlagen der Fehlerbehandlung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 06: Ausnahme- und Fehlerbehandlung in Java.

Vorlesung 10. Sitzung Grundlegende Programmiertechniken

1 Fehler-Objekte: Werfen, Fangen, Behandeln

Exceptions. CoMa-Übung VII TU Berlin. CoMa-Übung VII (TU Berlin) Exceptions / 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 13/14. Kapitel 11. Fehler und Ausnahmen

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

II.4.4 Exceptions - 1 -

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10. Institut für Angewandte Informatik

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally

Einstieg in die Informatik mit Java

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 854

15 Fehlerobjekte: Werfen, Fangen, Behandeln

15 Fehlerobjekte: Werfen, Fangen, Behandeln. Idee. Fehlerklassen. Fehlerklassen

Java Einführung Exception Handling. Kapitel 17

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Grundlagen der Programmierung. Kapitel 9: Ausnahmen. Überblick. Fehlerbehandlung in Software-Systemen. Ziel der Vorlesung

Grundlagen der Programmierung! Kapitel 9: Ausnahmen! Überblick! Fehlerbehandlung in Software-Systemen! Ziel der Vorlesung!

Handbuch konsultieren!

Javakurs zu Informatik I. Henning Heitkötter

Einstieg in die Informatik mit Java

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

9. Fehler und Ausnahmen Grundlagen der Programmierung 1 (Java)

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Exception. 6. Exceptions. Die Klasse java.lang.exception. Fehlermeldung. Klassenname. Ort des Auftretens

Einführung in die Programmierung Blockkurs Java

Einstieg in die Informatik mit Java

Java : Fehlerbehandlung.

Einstieg in die Informatik mit Java

Exceptions. Prof. Dr. Margarita Esponda SS M. Esponda-Argüero

Einstieg in die Informatik mit Java

Software Entwicklung 1. Subtyping revisited. Subtypbildung in Java: Klassen I. Subtyping und Vererbung I. Annette Bieniusa / Arnd Poetzsch-Heffter

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Exceptions und Vererbung

Praxis der Programmierung

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Ausnahmen. Exceptions. Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten. Dr. Beatrice Amrhein

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Transkript:

1 / 16 Einstieg in die Informatik mit Java Ausnahmen Gerd Bohlender Institut für Angewandte und Numerische Mathematik

Gliederung 2 / 16 1 Übersicht Ausnahmen 2 Klassenhierarchie 3 Try-Catch-Blöcke 4 Definition eigener Ausnahmen 5 Verwendung des Exception-Parameters

Gliederung 3 / 16 1 Übersicht Ausnahmen 2 Klassenhierarchie 3 Try-Catch-Blöcke 4 Definition eigener Ausnahmen 5 Verwendung des Exception-Parameters

4 / 16 Übersicht Ausnahmen Ausnahmen sind Ausnahmesituationen in Programmen und werden in Java durch spezielle Klassen dargestellt. Im folgenden eine Liste der häufigsten Ausnahmefehler: falscher Feldindex (index out of bounds), unzulässige Zeichen beim Lesen einer Zahl, erfolglose Dateisuche, Division durch Null.

Gliederung 5 / 16 1 Übersicht Ausnahmen 2 Klassenhierarchie 3 Try-Catch-Blöcke 4 Definition eigener Ausnahmen 5 Verwendung des Exception-Parameters

Klassenhierarchie 6 / 16 Throwable Error Exception Virt. Machine Error Linkage Error Runtime Exception... (i.allg. fatale Fehler) (behandelbare Fehler)

Gliederung 7 / 16 1 Übersicht Ausnahmen 2 Klassenhierarchie 3 Try-Catch-Blöcke 4 Definition eigener Ausnahmen 5 Verwendung des Exception-Parameters

Try-Catch Ausnahmen werden mittels try-catch-blöcken behandelt. Syntax t r y { BlockAnw ( Verbundanweisung ) catch ( Ausnahmetyp1 Name) { BlockAusn1 ( Verbundanweisung ) catch ( Ausnahmetyp2 Name) { BlockAusn2 ( Verbundanweisung )... f i n a l l y { / / o p t i o n a l B l o c k F i n a l ( Verbundanweisung ) 8 / 16

Try-Catch Es wird zunächst versucht, die Anweisungen in der Verbundanweisung BlockAnw zwischen try und catch auszuführen. Tritt hierbei keine Ausnahme ein, so wird die Verbundanweisung normal bis zum Ende ausgeführt, die Ausnahmebehandlung in BlockAusn1, BlockAusn2,... wird übergangen. Tritt eine Ausnahme ein, so wird BlockAnw abgebrochen und geprüft, ob die Ausnahme mit einem der Ausnahmetypen Ausnahmetyp1... übereinstimmt. In dem Fall wird die zugeordnete Verbundanweisung BlockAusn1... ausgeführt. Stimmt die Ausnahme mit keinem der Parameter überein, wird keine der Verbundanweisungen BlockAusn1... ausgeführt und die Ausnahme gilt als unbehandelt. In allen Fällen (egal ob eine Ausnahme aufgetreten ist oder nicht) wird am Ende BlockFinal ausgeführt. 9 / 16

10 / 16 Beispiel: Einlesen einer Zahl von der Kommandozeile Mögliche Ausnahmen beim Lesen von der Kommandozeile: (a) keine Eingabe von Parametern an der Kommandozeile, (b) keine legale Zahl in der Parameterzeichenkette. class Catch { public s t a t i c void main ( S t r i n g [ ] args ) { t r y { i n t i = I n t e g e r. p a r s e I n t ( args [ 0 ] ) ; System. out. p r i n t l n ( i ) ; catch ( ArrayIndexOutOfBoundsException e ) { System. out. p r i n t l n ( A u f r u f : java Catch <Zahl> ) ; catch ( NumberFormatException e ) { System. out. p r i n t l n ( F e h l e r h a f t e ganze Zahl ) ;

Try-Catch 11 / 16 Weitere Ausnahmen sind z.b.: ArithmeticException (z.b. Division durch Null) NullPointerException (z.b. Zugriff auf Objekt über null) Die catch-klauseln werden in der angegebenen Reihenfolge geprüft. Dabei wird nur die erste passende ausgeführt, d.h. zunächst müssen spezifische und erst danach allgemeine Ausnahmen geprüft werden (zunächst abgeleitete Klassen, dann erst die Basisklasse). Ausnahmeblöcke können auch geschachtelt werden: Ausnahmen, die vom inneren Ausnahmeblock nicht behandelt werden, werden an den äußeren weitergereicht. Weitere Punkte auf der nächsten Seite

Unbehandelte Ausnahmen 12 / 16 Falls in einer Methode oder einem Konstruktor Ausnahmen auftreten können, die dort nicht lokal behandelt werden, müssen diese hinter dem Methodenkopf aufgelistet werden. Beispiel boolean testeklasse ( Class c, S t r i n g t ) throws ClassNotFoundException {... / / bearbeite c, aber c e x i s t i e r t e v t l. n i c h t. Davon ausgenommen sind die ungeprüften Ausnahmen und deren Subtypen: Error, RuntimeException

Gliederung 13 / 16 1 Übersicht Ausnahmen 2 Klassenhierarchie 3 Try-Catch-Blöcke 4 Definition eigener Ausnahmen 5 Verwendung des Exception-Parameters

Definition eigener Ausnahmen class MeinFehler extends Exception { public MeinFehler ( S t r i n g s ) { super ( s ) ; / / F e h l e r t e x t w e i t e r r e i c h e n... public s t a t i c void main ( S t r i n g [ ] args ) throws MeinFehler { i f ( args. length > 0) throw new MeinFehler ( Und tschuess... ) ;... 14 / 16 Definitionen eigener Ausnahmen sind ebenfalls möglich. Diese werden z.b. von der Klasse Throwable abgeleitet und erzeugt durch throw new Ausnahme (Fehlertext ); Beispiel: Definition einer Ausnahmeklasse

Gliederung 15 / 16 1 Übersicht Ausnahmen 2 Klassenhierarchie 3 Try-Catch-Blöcke 4 Definition eigener Ausnahmen 5 Verwendung des Exception-Parameters

Verwendung des Exception-Parameters 16 / 16 Der Parameter bei catch liefert zusätzliche Informationen über die aufgetretene Ausnahme. Beispiel: public class TryCatchTest { public s t a t i c void main ( S t r i n g [ ] args ) { i n t [ ] f = {0,1,2; for ( i n t i = 1; i <3; i ++) t r y { System. out. p r i n t ( f [ i ] + ) ; catch ( ArrayIndexOutOfBoundsException e ) { System. out. p r i n t l n ( Falscher Index : + e. getmessage ( ) ) ; e. printstacktrace ( ) ; / / Fehlercode und Zeilennummer System. out. p r i n t l n ( Normales Programmende ) ; Gibt folgende Zeilen aus: Falscher Index: -1 java.lang.arrayindexoutofboundsexception: -1 at TryCatchTest.main(TryCatchTest.java:8) 0 1 2 Normales Programmende