Ausnahmen HS Merseburg (FH) WS 06/07.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
der Universität Oldenburg
Internetzugriff mit Strings und Streams
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Listen Richard Göbel.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
SWITCH - Anweisung.
Verzweigung oder bedingte Anweisung Weiter mit PP.
IF-ELSE-IF-Ketten Weiter mit PP..
Ein Beispiel in Java.
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
DO...WHILE Anweisung.
Java-AG Ausnahmebehandlung Gerhard Gröger.
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Ausnahmen1 Ausnahmen. DVG Ausnahmen 2 Was sind Programmfehler? Programm erzielt gar kein Ergebnis. Berechnetes Ergebnis stimmt nicht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Grundlagen der Programmierung
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
Exception-Handling.
Optimale Ursprungsgerade
EPROG Tutorium #3 Philipp Effenberger
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Testtechniken-Praktikum WS 2005/06 1 Arbeiten mit JUnit Andreas Höfer Dr. Matthias Müller Mit Beiträgen von Johannes Link.
Programmiervorkurs WS 2014/15 Instanzmethoden
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Robuste Programme durch Ausnahmebehandlung
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java.
Ausnahmen Exceptions Definition Ausnahmen erzeugen Ausnahmen abfangen
Implementieren von Klassen
 Präsentation transkript:

Ausnahmen HS Merseburg (FH) WS 06/07

während der Objektlebenszeit können Fehler auftreten: Eingabefehler, Programmfehler, ungewöhnliche Zustände anderer Objekte etc. Problem: Fehler müssen abgefangen werden  u. U. recht aufwändig   Java  Konzept der Ausnahmebehandlung: eine Ausnahme wird ausgelöst, wenn eine unerwartete Fehlerbedingung auftritt Anweisungen, in denen Fehler auftreten könnten, werden zusammengefasst  try-Block falls es bei der Ausführung der Anweisungen im try-Block zu Ausnahmen kommt, werden diese im folgenden catch-Block behandelt, d. h. es wird darauf reagiert HS Merseburg (FH) WS 06/07

// Anweisungen, in denen Fehler auftreten können } try { // Anweisungen, in denen Fehler auftreten können } catch (Exception1 e){ // e = lokale Referenzvariable // Behandlung der Ausnahmen vom Typ 1 catch (Exception2 e){ // Behandlung der Ausnahmen vom Typ 2 finally { // Anweisungen zum Beenden des try-Blockes HS Merseburg (FH) WS 06/07

public static void waitForReturn () { Exceptions sind eine saubere, einfache Art, Fehler abzufangen, ohne den Quelltext zu überfrachten exception = Signal an das Objekt, dass eine Bedingung eingetreten ist, die besondere Behandlung erfordert Beispielprogramm: public static void waitForReturn () { BufferedReader din = new BufferedReader (new InputStreamReader(System.in)); try { System.out.println("\nBitte Return-Taste druecken..."); din.readLine(); } catch (IOException e) { System.err.println("Fehler: "+e);} } HS Merseburg (FH) WS 06/07

auch durch break, continue, return catch-Block try-Block ist „normaler“ Block  wird durch die Anforderung einer Ausnahmebehandlung beendet,   auch durch break, continue, return   catch-Block kein, ein oder mehrere catch-Blöcke möglich, die auf Exceptions des try-Blockes reagieren Ursachen der Exceptions werden beseitigt (Ressourcen freigeben oder neue Ausnahmen anstoßen) Definition wie Methode: Parameter ist ein Objekt der Klasse Throwable oder einer ihrer Unterklassen HS Merseburg (FH) WS 06/07

Ablauf der Ausnahmebehandlung: wenn eine Ausnahme der Klasse IOException angefordert wird, wird der catch-Block mit einem Parameter IOException oder einer Basisklasse von IOException angesprungen und die Anweisungen des Blockes werden ausgeführt. finally-Block Anweisungen, die nach dem try-Block oder der Ausnahmebehandlung des catch-Blockes ausgeführt werden sollten Freigabe von Ressourcen etc. vergleichbar der finalize-Methode beim GC wird immer ausgeführt, auch nach return, break, continue ist kein passender catch-Block vorhanden, wird erst der finally-Block ausgeführt und dann beendet der Compiler mit dem Namen der Ausnahme und der beim Erzeugen der Ausnahme angegebenen Meldung HS Merseburg (FH) WS 06/07

Ausnahmen sind Klassen Exceptions sollten behandelt werden, wenn normalerweise nicht auftretende Ereignisse eintreten wird die Ausnahme nicht abgefangen, tritt standardmäßige Ausnahmebehandlung in Kraft Ausnahmen sind Klassen Exceptions sind eigene Klassen  es gibt eine Klasse pro Ausnahmetyp sind abgeleitet von der Klasse Throwable bzw. einer ihrer Unterklassen Error oder Exception Error: Probleme des Linkers beim dynamischen Laden von Programmteilen (Probleme mit der virtuellen Java Maschine) stellen schwerwiegende Fehler dar und sollten nicht abgefangen werden HS Merseburg (FH) WS 06/07

Klasse Throwable enthält eine Objektkomponente vom Typ String, die eine Meldung für den Benutzer über den Grund der Exception enthält eine Methode getMessage() zur Ausgabe des String ….. eigene Ausnahmen (von Exception ableiten) class Exception1 extends Exception { public Exception1(){ super(); } public Exception1(String s){ super(s); HS Merseburg (FH) WS 06/07

Motivation für eigene Ausnahmen: Reaktion auf spezielle Fehlersituationen benutzerangepassten Fehlertext erzeugen Daten, die Ausnahme ausgelöst haben, speichern   Beispiel: eine eingegebene Personalnummer wird nicht gefunden HS Merseburg (FH) WS 06/07

public class PersNrNichtGefundenException extends Exception { public String persNr; public Object person; // Konstruktor PersNrNichtGefundenException (String persNr, Object person) { super (“Keinen Namen mit der Personalnummer“+ persNr +“ gefunden.“) // merken der Daten, die Fehler hervorgerufen haben this.persNr = persNr; this.person = person; } HS Merseburg (FH) WS 06/07

Auslösen von Ausnahmen erzeugen von Ausnahmen durch throw throw new Exception1 („Die eigene Ausnahme 1 ist aufgetreten);   Beispiel: ändern des Namens eines Mitarbeiters durch Vorgabe einer Personalnummer public void aendereNamen (String persNr, Object person) throws PersNrNichtGefundenException { Person pers = find(persNr); if (pers == null) // wenn persNr nicht vorhanden // erzeugen eines Objektes der Klasse PersNr.... throw new PersNrNichtGefundenException(persNr, this); // wenn persNr existiert, dann verarbeiten ... } HS Merseburg (FH) WS 06/07

public static void main (String[] args) throws IOException { ... } Das throws-Konstrukt throws gibt an, welche Ausnahmen eine Methode erzeugen kann = Deklaration der auslösbaren Ausnahmen (checked exceptions) public static void main (String[] args) throws IOException { ... } oder eine Liste von Ausnahmen public void test()throws Exception1, Exception2 { ... }   statt Aufzählung mehrerer Exceptions kann auch Basisklasse benutzt werden protected void finalize() throws Throwable { // siehe Garbage Collector super.finalize(); close(); } HS Merseburg (FH) WS 06/07

Möglichkeiten zur Behandlung der throws-Ausnahmen: Ausnahme abfangen und behandeln Ausnahme abfangen und auf eigene Ausnahme abbilden  mit throw selbst auslösen ohne Behandlung die Methode passieren lassen das Fehlen von throws bedeutet, dass keine Ausnahme ausgeführt werden kann  führt u.U. zu Compilerfehlern HS Merseburg (FH) WS 06/07

NullPointerException IndexOutOfBoundsException Object Throwable Exception Error (andere Exceptions) RuntimeException AbstractMethodError NullPointerException IndexOutOfBoundsException NumberFormatException . . . ... HS Merseburg (FH) WS 06/07