Prinzip des Exception Handling

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

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

1 Fehler-Objekte: Werfen, Fangen, Behandeln

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

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

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

Javakurs zu Informatik I. Henning Heitkötter

Große Übung Praktische Informatik 1

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

Typumwandlungen bei Referenztypen

9. Fehlerbehandlung Advanced Programming Techniques. Wintersemester 2009 / 2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

1 Polymorphie (Vielgestaltigkeit)

Einführung in die Programmierung Blockkurs Java

Programmieren in Java

5.13 Umgang mit Fehlern

Enumerations und innere Klassen

Gebundene Typparameter

ihrer Klasse benötigt die Funktion einfuegenan:

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

Einführung in die Programmierung

Grundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung

Vorlesung Informatik 2

Neue Features in C# 2.0

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Studentische Lösung zum Übungsblatt Nr. 7

Objektorientierte Programmierung. Kapitel 18: Exceptions II

Java Reflection. Andreas Lochbihler. 15. Mai Lehrstuhl Programmierparadigmen Universität Karlsruhe

Algorithmen und Datenstrukturen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Java Fehlerbehandlung

Java I Vorlesung Exceptions

Vorlesung Programmieren

Javakurs für Anfänger

Kapitel 6. Vererbung

Java-Schulung Grundlagen

Java - Programmierung - Objektorientierte Programmierung 1

Kapitel 6. Vererbung

3. Exceptions. Hintergrund: Programmieren auf der Basis von Verträgen. Kundenklasse. Lieferantenklasse

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert

7. Übung zu Algorithmen und Datenstrukturen

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Java I Vorlesung 6 Referenz-Datentypen

5. Tutorium zu Programmieren

Java Schulung (Java 2 Java Development Kit 5 / 6)

Kapitel 6. Vererbung

Variablen manipulieren per JDI

Höhere Programmierkonzepte Testklausur

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Master of Advanced Studies in Software Engineering Java - Advanced Concepts. Musteraufgaben

Programmieren I + II Regeln der Code-Formatierung

Java Einführung Collections

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Javakurs für Anfänger

Grundlagen der Informatik für Ingenieure I

Objektorientierte Programmierung. Kapitel 18: Exceptions II

Teil V. Generics und Kollektionen in Java

AuD-Tafelübung T-B5b

Propädeutikum zur Programmierung

Algorithmen und Programmierung II

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Teil 1: Grundeigenschaften von Rechnern und Software

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

Prinzipien Objektorientierter Programmierung

8. Generics Grundlagen der Programmierung 1 (Java)

Einstieg in die Informatik mit Java

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Codegeneratoren mit Xtend , A. Arnold

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Datenbankanwendungsprogrammierung Crashkurs Java

Generische Datenstrukturen

Algorithmen und Datenstrukturen 07

2.4.3 Polymorphie (Wiederholung von Alp2)

Kapitel 12: Übersetzung objektorienter Konzepte

Java für Computerlinguisten

Mobile und Verteilte Datenbanken

Java-Implementierung der Priority-Queue und des Huffman-Algorithmus Effiziente Algorithmen SS12 Übung 4 Aufgabe 5 Johannes Hein

3 Objektorientierte Konzepte in Java

Objektorientierte Programmierung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Objektorientierte Programmierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objektorientierte Programmierung mit C++ SS 2007

Theorie zu Übung 8 Implementierung in Java

Überschreiben von Methoden

Generische Typen in Java 1.5. Die Erweiterung der Java Language Specification

Probeklausur: Programmierung WS04/05

Grundlagen der Informatik Ausnahmebehandlung & Threads

Repetitorium Informatik (Java)

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

JAVA 5 Generics. Proseminar Programmiersprachen Thema Java 5 Generics 1

Methoden (fortgeschritten) in C# - 1

12) Generische Datenstrukturen

II.1.1. Erste Schritte - 1 -

Remote Method Invocation

Transkript:

Prinzip des Exception Handling geschützter Block p(); catch (Exception e) { System.out.println(e.toString()); void p() throws Exception { throw new Exception(); Auslösen einer Exception Exception Handler Passender Exception-Handler wird in allen aktiven Methoden gesucht Exceptions sind Objekte Felder: Informationen über den Fehler Methoden: Ausgabe der Fehlerinformationen, etc. 1

Exception-Klassen Basisklasse aller Exceptions Object Systemfehler (z.b. beim Laden einer Klasse) Throwable Throwable(msg) getmessage(): String tostring(): String printstacktrace() Error RuntimeException Exception benutzerdefinierte Exceptions Checked Exceptions Laufzeitfehler (z.b. Index-Check, null-check, ) catch (MyException e) { // fängt MyException und Unterklassen catch (Exception e) { // fängt Exception und Unterklassen catch (Throwable e) { // fängt alle Exceptions 2

Checked Exceptions Exceptions, die abgefangen oder weiterleitet werden müssen Abfangen einer Exception throw new MyException(); catch (MyException e) { Weiterleiten einer Exception void foo() throws MyException { throw new MyException(); An jeder Aufrufstelle von foo() prüft der Compiler, ob MyException abgefangen oder weiterleitet wird. void bar() { foo(); catch (MyException e) { void bar() throws MyException { foo(); 3

RuntimeException Können, aber müssen nicht abgefangen werden NullPointerException Zugriff über null-referenz ArithmeticException Division durch 0, IndexOutOfBoundsException Arrayindex nicht im gültige Bereich ClassCastException Typumwandlung auf unerlaubten Typ Wenn nicht abgefangen Timer t; t.add(1); // liefert NullPointerException und bricht das Programm ab Wenn abgefangen t.add(1); catch (NullPointerException e) { System.out.println("t does not reference an object"); 4

Benutzerdefinierte Exceptions Beispiel: Exception-Klassen für Stack-Überlauf und -Unterlauf Exception StackException OverflowException UnderflowException public class StackException extends Exception { public class OverflowException extends StackException { public Object element; public OverflowException (Object e) { element = e; public class UnderflowException extends StackException { 5

Klasse Stack mit Exceptions public class Stack { private static final int MAX = 100; private Object[] data = new Object[MAX]; private int top = 0; public void push (Object obj) throws OverflowException { if (top == MAX) throw new OverflowException(obj); data[top] = obj; top++; public Object pop () throws UnderflowException { if (top == 0) throw new UnderflowException(); top--; return data[top]; Benutzung stack.push("an object"); System.out.println(stack.pop()); catch (OverflowException e) { System.out.println("stack overflow when pushing " + e.element); catch (UnderflowException e) { System.out.println("stack underflow"); 6

Multi-Catch Mehrere catches können auf ein Multi-Catch zusammengefasst werden stack.push("an object"); System.out.println(stack.pop()); catch (OverflowException UnderflowException e) { e.printstacktrace(); Statische Typ von e = StackException als gemeinsame Oberklasse von OverflowException und UnderflowException 7

Enumerationstypen Java 1.4: Menge benannter Konstantenwerte // colors static final int RED = 0; static final int BLUE = 1; static final int GREEN = 2; int color = BLUE; // priorities static final int LOW = 0; static final int NORMAL = 1; static final int HIGH = 2; int priority = HIGH; Problem: keine Typprüfung zwischen Konstantenmengen int color = HIGH; Compiler meldet keinen Fehler Java 5.0: Enumerationstypen enum Color { RED, BLUE, GREEN Color color = Color.BLUE; Compiler prüft, dass nur Color-Werte zugewiesen werden enum Priority { LOW(1), NORMAL(2), HIGH(4); private int val; private Priority(int val) { this.val = val; public int value() { return val; Priority prio = Priority.HIGH; System.out.println(prio.value()); // 4 8

Neue for-schleife Java 1.4: Iterieren über Arrays und Collections int[] primes = {2, 3, 5, 7, 11; for (int i = 0; i < primes.length; i++) { System.out.println(primes[i]); ArrayList names = new ArrayList(); names.add("alice"); names.add("bob"); Iterator iter = names.iterator(); while (iter.hasnext()) { System.out.println((String)iter.next()); Java 5.0: Neue for-schleife int[] primes = {2, 3, 5, 7, 11; for (int x: primes) { System.out.println(x); sprich: "for each int x in primes" ArrayList names = new ArrayList(); names.add("alice"); names.add("bob"); for (Object s: names) { System.out.println((String)s); 9

Variable Anzahl von Parametern Java 1.4: Methoden mit fixer Parameteranzahl static int sum(int x, int y) { return x + y; int x = sum(17, 4); kann nur die Summe von 2 Zahlen bilden Java 1.4: Methoden mit variabel vielen Parametern vom gleichen Typ static int sum(int[] val) { int res = 0; for (int i = 0; i < val.length; i++) res += val[i]; return res; int x = sum(new int[] {1, 2, 3, 4, 5); Java 5.0: "vararg-parameter" static int sum(int val) { int res = 0; for (int i = 0; i < val.length; i++) res += val[i]; return res; int x = sum(1, 2, 3, 4, 5); vararg-parameter muss der letzte formale Parameter sein 10