25.05.1999, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS 1999 1 Exceptions in der Programmiersprache Java.

Slides:



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

Vertieferseminar Geoinformation WS 02/03
Ein Beispiel in Java.
Real - Time Java Seminar Asynchrone Ereignisse und Asynchroner Kontrolltransfer in Real - Time Java Sönke Eilers.
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java News & Music Der Chat
Threads Richard Göbel.
Java: Objektorientierte Programmierung
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.
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: 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.
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
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
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
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Das Roboterprojekt Einführung Der erste Entwurf Das Thread-Konzept Hindernisse Website.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Java Threads Sebastian Werler
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
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.
Grundlagen der Programmierung
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Exception-Handling.
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Letzte Chance!!! Exceptions Thread, Runnable Synchronized Wait, notify, notifyAll Thread States Semaphoren JCSP Swing JOMP Linearizability History Amdahl‘s.
Parallelisierung für Multiprozessor-Maschinen Teil 2.
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schütte AOSD1.
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
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
2 Nebenläufige Prozesse. 2.1 Programmstruktur und Prozesse private Prozess = Anweisungen + Daten gemeinsame Aber:Wie verhält sich das Konstrukt „Prozess“
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 11. Vorlesung WS 2001/2002.
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
OOP mit Java Oder: Java in 5 Tagen. 1. Tag Klassen und Methoden Hello World in Variationen Von Menschen und Geschlechtern Horden (Schlange stehen)
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/ Aufzählungstypen.
Dr. Wolfram Amme, Das Thread-Konzept in objektorientierten Programmiersprachen, Informatik II, FSU Jena, SS Thread-Konzept in objektorientierten.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Beispiel class SpreadSheet { int cellA1, cellA2, cellA3; synchronized.
Java Programme nur ein bisschen objektorientiert.
Dr. Wolfram Amme, Generisches Programmieren, Informatik II, FSU Jena, SS Generisches Programmieren.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Kapselung von Daten I Gründe für die Datenkapselung Datenkonsistenz leichtere.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Synchronisation mit Monitoren Threads können in Java parallel ablaufen, oft.
Praktische Informatik 1
Ausnahmen Exceptions Definition Ausnahmen erzeugen Ausnahmen abfangen
 Präsentation transkript:

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Konzept der Exceptionbehandlung Auftreten einer Exception signalisiert eine bestimmte Ausnahme- oder Fehlersituation Exceptions versus Errors Exceptions sind vergleichsweise ´´leichte´´ Fehler Errors sind schwerwiegende ´´nicht behebbare´´ Fehler Exceptions und Errors sind Unterklassen der Klasse Throwable Konstruktion eigener Exceptions durch Erweiterung vorhandener IndexOutOfBoundsException ArrayIndexOutOfBoundsException Exception-Klassen enthalten zwei Arten von Konstruktoren Erzeugung einer Exception ohne Fehlermeldung Erzeugung einer Exception mit Fehlermeldung

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Typen von Ausnahmen Error enthält System- und Übersetzungszeit-Fehler IO-Exception enthält Fehler, die abgefangen werden müssen RuntimeException enthält Fehler, die zur Laufzeit innerhalb der JVM auftreten. Sie müssen nicht abgefangen werden. Throwable Exception Error RuntimeException IOException OutOfMemoryError LinkageError SecurityException FileNotFoundException NullPointerException.....

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Abfangen einer Exception Genereller Ablauf beim Abfangen einer Exception try{ // Anweisungsblock der eine Exception auslösen kann } catch( FirstException e){ // Anweisungen, die bei einem FirstException ausgeführt werden } catch( SecondException e){ // Anweisungen, die bei einem SecondException ausgeführt werden } finally{ // Abschlußaktionen, die grundsätzlich ausgeführt werden } Exceptions wandern die Aufrufhierarchie hinauf, bis sie abgefangen werden

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Beispiel einer catch-Anweisung int a, b, c; // Eingabe von b und c... try{ a = b / c; } catch (ArithmeticException e){ System.out.println(´´Bitte anderen Divisor eingeben!´´); System.out.println(´´Meldung: ´´ + e.getMessage()); } // Ausgabe:Bitte anderen Divisor eingeben! Meldung: / by zero

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Abfangen mehrerer Exceptions beim Abfangen mehrerer Exceptions ist die Reihenfolge zu beachten int [] intArray = {1, 2, 3, 4}; int arrayIndex = -1; try{ intArray[arrayIndex] = 0; } catch (IndexOutOfBoundException e){ System.out.println(´´Ungültiger Index´´); } catch (ArrayIndexOutOfBoundException e){ // Diese Stelle wird nie erreicht ==> Fehler zur Übersetzungszeit System.out.println(´´Warten auf Godot´´); }

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS finally-Anweisung finally-Anweisung enthält Aufräumarbeiten, die auch nach Auslösung einer Exception ausgeführt werden müssen public void convertStr(String[] src, int[] dst){ int [] temp = new int[src.length]; try{ for(int i = 0; i < src.length; i++) temp[i] = Integer.parseInt(src[i]); System.arraycopy(temp, 0, dst, 0, temp.length); } finally{ // temporären Puffer freigeben temp = null; }

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Auslösung einer Exception Unter dem Auslösen einer Exception versteht man die Erkennung und anschließende Fehlersignalisierung die throw-Anweisung erwartet als Argument ein Objekt der Klasse Throwable oder einer ihrer Unterklassen Integer value;... public void setValue(Integer value){ if(value == null) throw new IllegalArgumentException(´´null value´´); this.value = value; }

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Die throws-Klausel alle Exceptions, die nicht von der Klasse RuntimeException abgeleitet werden, erwarten eine Fehlerbehandlung die throws-Klausel signalisiert, daß eine Methode Exceptions nicht explizit abfängt, sondern dem Aufrufer überläßt Angabe mehrerer Exceptions in der throws-Klausel möglich FileInputStream stream; public void openFile(String name) throws FileNotFoundException{ stream = new FileInputStream(name); } beim Überschreiben einer Methode dürfen der throws-Klausel keine neuen Exceptions hinzugefügt werden, hingegen ist das Weglassen von Exceptions zulässig

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Threads in der Programmiersprache Java

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Threads ein Thread ist ein eigenständiges Programmfragment, das parallel zu anderen Teilen eines Programmes ablaufen kann alle Threads eines Programmes teilen sich einen gemeinsamen Adressraum (leichtgewichtiger Prozeß) in einem Multithreading-System verwaltet die Rechnerkern- vergabe (Scheduler) die zur Ausführung anstehenden Threads pseudoparallele Abarbeitung von Threads auf Einprozessorsystemen parallele Abarbeitung von Threads auf Mehrprozessorsystemen Synchronisation von Threads Synchronisation mit Monitoren Synchronisation durch Ereignisse Synchronisation auf das Ende von anderen Threads

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Threads in Java Threads werden in der Virtuellen Maschine durch Objekte der Klasse java.lang.Thread repräsentiert Virtuelle Maschine verwendet Thread-Objekte zum Starten, Starten oder Suspendieren von Threads ein Thread beginnt die Ausführung mit dem Aufruf der run()- Methode des Thread-Objektes Deklaration eines Threads Konstruktion einer Unterklasse der Klasse Thread Implementierung des Interfaces Runnable Erzeugen eines Threads Erzeugen eines Objektes einer Unterklasse der Klasse der Thread Erzeugen eines Thread-Objektes unter Angabe eines Objektes einer Klasse, welches das Interface Runnable implementiert

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Deklaration und Erzeugen eines Threads class TextThread extends Thread { String text; public TextThread(String text){ this.text = text; } public void run() { for(int i = 0; i< 10; i++) System.out.println(text); }... TextThread java = new TextThread(´´Java´´); java.start(); TextThread expresso = new TextThread(´´Expresso´´); expresso.start();

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Deklaration und Erzeugen eines Threads class TextThread implements Runnable { String text; public TextThread(String text){ this.text = text; } public void run() { while( true ) System.out.println(text); }... TextThread java = new TextThread(´´Java´´); Thread thread = new Thread(java); thread.start();

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Zustände eines Threads seit JDK 1.2 verworfen resume() suspend() resume() suspend() interrupt() sleep() notify(), interrupt() wait(), join() run() zu Ende stop() start() new Scheduler yield() schlafend suspendiert blockiert erzeugt rechenwillig beendet rechnend

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Steuerung eines Threads Starten eines Threads java.start(); Beenden eines Threads java.stop(); Unterbrechen eines Threads java.suspend(); Fortsetzen eines Threads java.resume(); Pausieren eines Programmes try { java.sleep(1000) // 1000 ms } catch ( InterruptedException e) { }

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Steuerung eines Threads interrupt() - Wecken von schlafenden bzw. blockierten Threads yield() - der aufrufende Thread gibt freiwillig die CPU ab isAlive() - true, falls der Thread gestartet, aber nicht beendet ist join() - wartet auf das Ende des Threads, für den die Methode aufgerufen wurde setName(String) - ändert den Namen des Threads getName() - gibt den Namen des Threads aus setPriority(int) - ändert die Priorität des Threads Thread.MIN_PRIORITY = 0 Thread.MAX_PRIORITY = 10 (Standard - Thread.NORM_PRIORITY = 5) getPriority() - gibt die Priorität des Threads aus

, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Daemon-Threads keine User-Threads mehr im System => Programmende 4 public LogThread(String fileName) throws IOException { buffer = new Vector(); logStream = new PrintWriter(new fileWriter( fileName )); setPriority( Thread.MIN_PRIORITY ); setDaemon( true ); } public void run(){ while( true ){ try{ sleep( INTERVAL ); // Meldungen in die Datei schreiben } catch ( InterruptedException e ){ }; }