Ausnahmen. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

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

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

Ausnahmen. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

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

Java Fehlerbehandlung

Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

Ausnahmebehandlung PK11W-16,

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

Handbuch konsultieren!

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Java Einführung Exception Handling. Kapitel 17

1 Fehler-Objekte: Werfen, Fangen, Behandeln

Einführung in die Programmierung mit Java

Ausdrucksbäume in verschiedenen Darstellungen

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

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

Robuste Programme durch Ausnahmebehandlung

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

II.4.4 Exceptions - 1 -

Ausnahmen (Exceptions)

15 Fehlerobjekte: Werfen, Fangen, Behandeln

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

15 Fehlerobjekte: Werfen, Fangen, Behandeln

Ausnahmen und IO. Fehler, Ausnahmen, Java- Exception, throw, catch, Ströme, Puffer, Dateien lesen, schreiben, Tastatur, Terminal, HTTP

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

Vorlesung 10. Sitzung Grundlegende Programmiertechniken

Java : Fehlerbehandlung.

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Ausnahmen

Selectionsort Beispiel

Umgang mit Fehlern. Sinn von Ausnahme-/Fehlerobjekten Dokumentation Umgang mit Fehlern Eigene Fehlerklassen

Programmiertechnik Ausnahmen

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

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 280

3.11 Ausnahmen und Ein-/Ausgabe

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Vorlesung Informatik II

Mögliche Implementierung von intern():

Java I Vorlesung Exceptions

15 Fehlerobjekte: Werfen, Fangen, Behandeln

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

15 Fehlerobjekte: Werfen, Fangen, Behandeln

Einstieg in die Informatik mit Java

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Abschnitt 18: Beispiel: I/O-Streams

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

Modellierung und Programmierung 1

Kapitel 15: Ausnahmen und

II.4.4 Exceptions - 1 -

9. Ausnahmebehandlung

EINFÜHRUNG IN DIE PROGRAMMIERUNG

9. Ausnahmebehandlung

Übungen zu Middleware Universität Erlangen-Nürnberg Informatik 4, 2007 Z-Java-Exceptions.fm

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

Kapitel 12: Ausnahmen und Ausnahmebehandlung

Java Einführung IO (Eingabe/Ausgabe)

Sortieralgorithmen. Nachfolgend wird die Menge der ganzen Zahlen und die darauf definierte Relation betrachtet.

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

Ausnahmen und Zusicherungen

Modellierung und Programmierung 1

Exceptions. CoMa-Übung VI TU Berlin. CoMa-Übung VI (TU Berlin) Exceptions / 19

Grundlagen der Objektorientierten Programmierung - Ein- / Ausgabe-Streams

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Komponenten-basierte Entwicklung Teil 4: Exceptions

2 Eine einfache Programmiersprache

Verteilte Systeme - Java Networking (Sockets) 2 -

7. Java Input/Output. Benutzereingaben/Konsolenausgabe, Datei Ein- und Ausgabe (I/O)

Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException

Einstieg in die Informatik mit Java

java.io Ziel Ressourcen Page 1 Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Java Tutorial Java API Dokumentation

2 Eine einfache Programmiersprache

Liste Programmieren Java Überblick

Kapitel 11: Ausnahmebehandlung

Grundlagen der Programmierung! Kapitel 10: Ein- und Ausgabe! Ziele dieses Kapitels! Datei! Das Problem!

Grundlagen der Informatik für Ingenieure I

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

5.2 Input/Output mit Dateien

Abschnitt 7: Weitere Konzepte der oo Programmierung in Java

Exceptions - Klausuraufgaben

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Martin Schultheiß

Einführung in die Programmierung für NF. Fehler und Ausnahmen

2 Eine einfache Programmiersprache

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Grunddatentypen, Ausdrücke und Variablen

Dateien: Allgemeines Dateien lesen Beispiel: CSV-Daten Filter Ausgabe in Dateien. Programmieren I. Dr. Klaus Höppner

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

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

Vorlesung Programmieren

Informatik 1 - Translation Studies in Information Technology. Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17

Klassen und Objekte. Objekte einer Klasse bilden

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

Transkript:

Ausnahmen Zentralübung zur Vorlesung http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12

Inhalte der heutigen Vorlesung: Arten von Fehlern Auslösen von Ausnahmen Vermeiden von Ausnahmen Ausnahmeklassen in Java Checked Exceptions Unchecked Exceptions Ausnahmebehandlung Benutzerdefinierte Ausnahmen Grunddatentypen, Ausdrücke, Variablen 2

Fehler- und Ausnahmen in Java Alle Unterklassen der Klasse java.lang.throwable. Source: Gilbert Beyer http://www.ustudy.in/sites/default/files/exception-classes.gif und Annabelle Klarl 3

Arten von Ausnahmen: Checked Exceptions Alle Unterklassen der Klasse Exception mit Ausnahme aller Unterklassen der Klasse RuntimeException müssen abgefangen werden. 4

Arten von Ausnahmen: Unchecked Exceptions Alle Unterklassen der Klasse RuntimeException müssen nicht abgefangen werden. 5

Arten von Ausnahmen: Errors Alle Unterklassen der Klasse Error. 6

Aufgabe 1) Jede der folgenden Situationen hat zur Folge, dass vom Java- Laufzeitsystem ein Objekt der Klasse Throwable geworfen wird. 1. Geben Sie jeweils an, zu welcher der Kategorien Error, checked Exception, uncheckedexception dieses Objekt gehört. 2. Beantworten Sie außerdem jeweils die Fragen: Darf das Java- Programm explizit angeben, was damit geschehen soll? Muss es das explizit angeben? Sollte es das normalerweise explizit angeben, wenn es darf aber nicht muss? 7

Aufgabe 1a) Ein Array a wurde ordnungsgemäß erzeugt, danach ist der Ausdruck a[n] erlaubt, aber der Wert von n ist zum Ausführungszeitpunkt negativ (ArrayIndexOutOfBounds). 8

Loesung 1a) 1. Klasse: ArrayIndexOutOfBoundsException 1. Kategorie: RuntimeException bzw. unchecked Exception. 2. Verwendung in catch- oder throws-konstrukten: Programm darf, muss aber nicht* *Empfehlung: Das Programm sollte das normalerweise auch nicht tun, weil es diese Kategorie von Fehler selbst verhindern kann und soll. Wenn es diese Kategorie von Fehler selbst verhindert, kommen solche Exceptions auch nicht vor, deshalb wird es nicht dazu gezwungen, diese Kategorie von Fehler zu behandeln. 9

Aufgabe 1b) Ein neues Objekt soll erzeugt werden, aber dafür ist kein Speicherplatz mehr verfügbar in dem es gespeichert werden kann (OutOfMemory). 10

Loesung 1b) 1. Klasse: OutOfMemoryError 1. Kategorie: Error. 2. Verwendung in catch- oder throws-konstrukten: Programm darf, muss aber nicht * *Empfehlung: Das Programm sollte das normalerweise auch nicht tun. Das Programm kann diese Kategorie von Fehler zwar nicht selbst verhindern. Wenn diese Kategorie von Fehler aber einmal auftritt, kann das Programm kaum noch sinnvoll reagieren das Programmstück für die Fehlerbehandlung könnte zum Beispiel selbst Speicher benötigen und damit nicht mehr korrekt ausführbar sein deshalb wird es nicht dazu gezwungen, diese Kategorie von Fehler zu behandeln. 11

Aufgabe 1c) Eine Datei wurde zum Lesen geöffnet und daraufhin überprüft, dass das Dateiende noch nicht erreicht ist. Unmittelbar vor der nächsten Leseoperation wird die Stromversorgung des Geräts unterbrochen, auf dem die Datei gespeichert ist. Die nächste Leseoperation kann damit nichts mehr von der Datei lesen, versucht also rein physikalisch (wenn auch nicht logisch) über das Ende der Datei hinaus zu lesen (EOF). 12

Loesung 1c) 1. Klasse: EOFException 1. Kategorie: checked Exception. 2. Verwendung in catch- oder throws-konstrukten: Das Programm muss dies tun!* *Begründung: Das Programm kann diese Kategorie von Fehler nicht selbst verhindern. Wenn diese Kategorie von Fehler aber einmal auftritt, kann es durchaus noch sinnvoll darauf reagieren zum Beispiel alle anderen offenen Dateien in einen konsistenten Zustand bringen und dann beenden, deshalb wird es vom Compiler dazu gezwungen, zu sagen, ob es diese Kategorie von Fehler selbst behandelt oder weitergibt. 13

Aufgabe 1d) Die Klasse Main benutzt eine Methode m() aus einer Klasse K. Nachdem beide Dateien fehlerlos übersetzt wurden, wird die Datei K.java editiert, die Methode m() umbenannt zu n(), dann die Datei K.java neu übersetzt. Danach wird das unveränderte Hauptprogramm wieder gestartet, aber die von ihm verwendete Methode m() existiert in der Klasse K gar nicht mehr (NoSuchMethod, IncompatibleClassChange). 14

Aufgabe 1d) 1. Klasse: NoSuchMethodError 1. Kategorie: Error. 2. Verwendung in catch- oder throws-konstrukten: Programm darf, muss aber nicht * *Empfehlung: Das Programm sollte das normalerweise auch nicht tun. Das Programm kann diese Kategorie von Fehler zwar nicht selbst verhindern. Wenn diese Kategorie von Fehler aber einmal auftritt, kann das Programm kaum noch sinnvoll reagieren deshalb wird es nicht dazu gezwungen, diese Kategorie von Fehler zu behandeln. 15

Aufgabe 1e) Eine Variable v ist vom Typ K, der eine Unterklasse von Object ist, also ist der Ausdruck v.tostring() erlaubt, aber zum Ausführungszeitpunkt hat die Variable v den Wert null (NullPointer). 16

Aufgabe 1e) 1. Klasse: NullPointerException 1. Kategorie: RuntimeException bzw. unchecked Exception. 2. Verwendung in catch- oder throws-konstrukten: Programm darf, muss aber nicht* *Empfehlung: Das Programm sollte das normalerweise auch nicht tun, weil es diese Kategorie von Fehler selbst verhindern kann und soll. Wenn es diese Kategorie von Fehler selbst verhindert, kommen solche Exceptions auch nicht vor, deshalb wird es nicht dazu gezwungen, diese Kategorie von Fehler zu behandeln. 17

IOExceptions Beispiele: 18

Eingabe und Ausgabe bisher (1) GUIs mit AWT und Swing Eingabe über JOptionPane-Dialog Ausgabe über eine JTextArea (2) Standardausgabe: Ausgabe über einen Printstream System.out.println("Ergebnis: " + result); 19

Standardein- und Ausgabe in Java In jedem Java-Programm erzeugt der Compiler automatisch eine Instanz der Klasse System mit Attributen in und out. (1) Standardausgabe: System.out (Ausgabestrom vom Typ: PrintStream) (2) Standardeingabe System.in (Eingabestrom vom Typ: InputStream) 20

Ein- und Ausgabe über Streams Zwei Arten von Stream-Klassen : (1) Byteorientierte Ströme/ByteStreams - Lesen/Schreiben jeweils nur ein Byte - Basisklassen: java.io.inputstream, java.io.outputstream - Beispiele: InputStream, FileInputStream, FileOutputStream, (2) Zeichenorientierete Ströme/CharacterStreams - Lesen/Schreiben zwei Byte oder ein char - Basisklassen: java.io.reader, java.io.writer - Beispiele: BufferedReader, FileReader, FileWriter, 21

Komfortable Ein- und Ausgabe Beispiel Einlesen: (1) InputsStreams haben eine Methode int read() zum Einlesen des nächsten 1 Byte (2) Reader haben eine Methode int read() zum Einlesen der nächsten 2 Byte (char muss man casten) (3) BufferedReader hat eine Methode String readline() zum zeilenweisen Einlesen von Strings 22

Komfortable Ein- und Ausgabe import java.io.*; public class Eingabe { public static void main(string[] args) throws IOException { InputStreamReader reader = InputStreamReader(System.in)); BufferedReader console = new BufferedReader(reader); System.out.println("Hallo, mein Name ist HAL!"); System.out.println("Wie lautet Dein Name?"); String name = console.readline(); System.out.println("Hallo, " + name + ". " + "Freut mich, Dich kennenzulernen."); } } 23

Abfangen von IO-Exceptions import java.io.*; public class Eingabe { public static void main(string[] args) throws IOException { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Hallo, mein Name ist HAL!"); System.out.println("Wie lautet Dein Name?"); String name = in.readline(); System.out.println("Hallo, " + name + ". " + "Freut mich, Dich kennenzulernen."); } } 24

Behandeln mit try- und catch- Block public static void main(string[] args) { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Wie lautet Dein Name?"); String name = ""; try { name = in.readline(); } catch (IOException e) { System.out.println("Fehler beim Einlesen: " + e.getmessage()); System.out.println("Programm wird beendet!"); System.exit(1); // abnormal termination } System.out.println("Hallo, " + name + "."); } } 25

Behandeln mit try- und catch- Block public static String readstring() { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); while(true) { try { return in.readline(); } catch (IOException e) { System.out.println("Fehler beim Einlesen: " + e.getmessage()); System.out.println("Versuchen Sie es nochmal!"); } } 26

Einlesen von Zahlen public class ZahlEinlesen { public static void main(string[] args) { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Zahl eingeben: "); String s = ""; try { s = in.readline(); int zahl = Integer.parseInt(s); } catch (NumberFormatException e) { System.out.println("Keine Zahl!"); } catch (IOException e) { System.out.println("Fehler!"); } 27

Programm das Dateien liest und schreibt public static void aneinanderhaengen(string[] dateinamen) { BufferedOutputStream out = new BufferedOutputStream(System.out) int data; for (int n = 0; n < dateinamen.length; n++) { try {BufferedInputStream in = new BufferedInputStream( new FileInputStream(dateinamen[n])); while ((data = in.read())!= -1) {//EOF Test out.write(data); } out.flush(); //Leeren des Puffers } catch (FileNotFoundException exception) { System.err.println("Die Datei " + dateinamen[n] + " wurde nicht gefunden."); } catch (IOException exception) { } System.err.println("Fehler beim Lesen/Schreiben."); 28