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

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

1 Fehler-Objekte: Werfen, Fangen, Behandeln

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

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

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

15 Fehlerobjekte: Werfen, Fangen, Behandeln

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

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

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

Java Fehlerbehandlung

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

Java Einführung Exception Handling. Kapitel 17

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Ausnahmenbehandlung in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

Kapitel 9: Klassen und höhere Datentypen. Selektoren

Java - Fehler im Code. Leibniz Universität IT Services Anja Aue

1.5. Strukturierte Anweisungen

Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte)

Programmieren I + II Regeln der Code-Formatierung

Java : Fehlerbehandlung.

Distributed Computing Group

Javakurs zu Informatik I. Henning Heitkötter

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

II.1.1. Erste Schritte - 1 -

Ausdrucksbäume in verschiedenen Darstellungen

Javakurs für Anfänger

5.13 Umgang mit Fehlern

Einstieg in die Informatik mit Java

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

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

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

Informatik B von Adrian Neumann

Vorkurs Informatik WiSe 16/17

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

Objektorientierte Programmierung. Kapitel 13: Exceptions

Einführung in die Programmierung Blockkurs Java

AuD-Tafelübung T-B5b

1. Sei der String s = new String( xyzzy ) gegeben. Welcher Aufruf verändert s?

4.5 Exceptions. TU Darmstadt Allgemeine Informatik II, SS 05

Einstieg in die Informatik mit Java

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Typumwandlung

Klausur Grundlagen der Programmierung

Einführung in Javadoc

Allgemeine Informatik II SS :30-13:30 Uhr

System.out.println("TEXT");

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Klausur Fachprüfung Wirtschaftsinformatik. Name:

Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden

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

Vom Testkonzept zu JUnit

Eine JAVA Einführung ... Quellcode:... COMA Übung 3. T.Bosse. A.Griewank. Vorschau JAVA Programme Sprachen Kate

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Einstieg in die Informatik mit Java

Arrays und Schleifen

7. Übung zu Algorithmen und Datenstrukturen

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Programmieren in Java

C++ - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue

Standardkonstrukte in Java

Primitive Datentypen

Einstieg in die Informatik mit Java

Einführung in die Programmierung

Unterlagen. CPP-Uebungen-08/

Tag 4 Repetitorium Informatik (Java)

Exception Handling, Tracing und Logging C#.NET

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Grundlagen der Informatik für Ingenieure I

SEP 114. Design by Contract

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Objektorientierte Programmierung. Kapitel 18: Exceptions II

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Erster Bug: eine Motte

Große Übung Praktische Informatik 1

Wie entwerfe ich ein Programm?

Einführung in die Programmierung Wintersemester 2016/17

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Tutoraufgabe 1 (Programmanalyse):

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Java I Vorlesung Exceptions

Schleifen in C/C++/Java

1 Polymorphie (Vielgestaltigkeit)

Einführung in die Informatik I Informatik I/A

Einstieg in die Informatik mit Java

Name: Matrikelnr : Aufgabe 1: (ca. 8 Punkte )

Programmieren I. Kapitel 5. Kontrollfluss

Repetitorium Informatik (Java)

Einführung in die Informatik Tools

Probeklausur: Programmierung WS04/05

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Objektorientierte Programmierung. Kapitel 18: Exceptions II

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Einstieg in die Informatik mit Java

2. Semester, 2. Prüfung, Lösung

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

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

Themen der Übung. Rekursion. Dateien einlesen Sudokus. Assertions

Proseminar C-Programmierung Uni HH - SS Schriftliche Ausarbeitung. Error-handling in C. Lucas Georg

Transkript:

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

Themen der Übung 1 Compilezeit- und Laufzeitfehler Exceptions 3 Try-Catch-Finally CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 / 1

Compilezeit- und Laufzeitfehler Compilezeitfehler Compilezeitfehler sind Fehler, die der Java-Kompiler (javac) beim Kompilieren eines Java-Programms findet. int i = 1.0: int() array == null; Laufzeitfehler Laufzeitfehler sind Fehler, die Java (java) beim Ausführen eines Java-Programms findet. int i = 1/0; Andere Fehler Es gibt Fehler, die weder der Java-Kompiler noch Java beim Ausführen findet. Solche Fehler sind weder Compilezeitzeit noch Laufzeitfehler. Endlosschleifen CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 3 / 1

Compilezeit- und Laufzeitfehler Beispiele (1) 1 p u b l i c c l a s s F r a c t i o n { 3 p r i v a t e long num ; 4 p r i v a t e long denom ; 5 6 p u b l i c F r a c t i o n m u l t i p l y ( r ) { 7 t h i s. num = t h i s. num r. num 8 t h i s. denom = t h i s. denom r. denom 9 } 10 } Fehler Fehlende Kommas in Zeilen 7 & 8 Compilefehler Fehlendes return / falscher Rückgabetyp Compilefehler CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 4 / 1

Compilezeit- und Laufzeitfehler Beispiele () 1 p u b l i c c l a s s F r a c t i o n { 3 p r i v a t e long num ; 4 p r i v a t e long denom ; 5 6 p u b l i c Void sum ( F r a c t i o n r ) { 7 num += r. num ; 8 denom += r. denom ; 9 } 10 } Fehler Void ist kein Rückgabetyp Compilefehler Falsche Implementierung Weder noch CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 5 / 1

Compilezeit- und Laufzeitfehler Beispiele (3) 1 p u b l i c c l a s s HelloWorld { 3 p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 4 double d = 0. 0 ; 5 System. out. p r i n t l n ( ( S t r i n g ) 1. 0 ) ; 6 System. out. p r i n t l n ( ( S t r i n g ) d ) ; 7 System. out. p r i n t l n ( ( i n t ) Double. NaN) ; 8 System. out. p r i n t l n ( ( long ) ( double ) ( long ) Double. POSITIVE INFINITY ) ; 9 } 10 } Fehler Zeilen 5 & 6 sind nicht konvertibel Compilefehler Zeilen 7 & 8 funktionieren Ergeben 0 und 63 1 CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 6 / 1

Compilezeit- und Laufzeitfehler Beispiele (4) 1 p u b l i c c l a s s HelloWorld { 3 p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 4 i n t [ ] l e n g t h s = new i n t [ a r g s. l e n g t h ] ; 5 i n t t o t a l ; 6 f o r ( i n t i =0; i <l e n g t h s. l e n g t h ; i ++) { 7 l e n g t h s [ i ] = a r g s. l e n g t h ; 8 t o t a l += l e n g t h s [ i ] ; 9 } 10 System. out. p r i n t l n ( D u r c h s c h n i t t : + t o t a l / a r g s. l e n g t h ) ; 11 } 1 } Fehler Variable total nicht initialisiert Compilefehler Potentielle ArithmeticException in Zeile 10 Laufzeitfehler CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 7 / 1

Compilezeit- und Laufzeitfehler Beispiele (5) 1 p u b l i c c l a s s HelloWorld { 3 p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 4 i n t [ ] l e n g t h s = new i n t [ a r g s. l e n g t h ] ; 5 double t o t a l = 0. 0 ; 6 f o r ( i n t i =0; i <=l e n g t h s. l e n g t h ; i ++) { 7 t o t a l += a r g s. l e n g t h ( ) ; 8 } 9 System. out. p r i n t l n ( D u r c h s c h n i t t : + t o t a l / a r g s. l e n g t h ) ; 10 } 11 } Fehler Array hat keine length() Methode Compilefehler ArrayIndexOutOfBoundsException in der Schleife Laufzeitfehler CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 8 / 1

Compilezeit- und Laufzeitfehler Beispiele (6) 1 p u b l i c c l a s s HelloWorld { 3 i n t [ ] numbers ; 4 5 p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 6 i n t [ ] numbers = new i n t [ a r g s. l e n g t h ] ; 7 f o r ( i n t i =0; i <numbers. l e n g t h ; i ++) { 8 numbers = I n t e g e r. p a r s e I n t ( a r g s ) ; 9 numbers = numbers numbers ; 10 } 11 } 1 } Fehler Integer.parseInt funktioniert nicht mit Arrays Compilefehler numbers nicht statisch Compilefehler * funktioniert nicht mit Arrays Compilefehler CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 9 / 1

Compilezeit- und Laufzeitfehler Beispiele (7) 1 p u b l i c c l a s s HelloWorld { 3 s t a t i c i n t [ ] numbers ; 4 5 p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { 6 i n t [ ] numbers = new i n t [ a r g s. l e n g t h ] ; 7 f o r ( i n t i =0; i <numbers. l e n g t h ; i ++) { 8 numbers [ i ] = I n t e g e r. p a r s e I n t ( a r g s [ i ] ) ; 9 numbers [ i ] = numbers [ i ] numbers [ i ] ; 10 } 11 } 1 } Fehler NumberFormatException in Zeile 8 möglich Laufzeitfehler NullPointerException in Zeile 9 möglich Laufzeitfehler CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 10 / 1

Exceptions Exceptions Exceptions sind Javas Konzept, um mit Fehlern und außergewöhnlichen Situationen umzugehen. 1 t r y { // Code, d e r e i n e E x c e p t i o n a u s l o e s e n kann 3 } catch (... ) { 4 // Code zum Behandeln d e r E x c e p t i o n 5 } 6 // Es geht normal w e i t e r, d i e E x c e p t i o n wurde b e h a n d e l t try-catch-finally Exceptions werden in try-catch-finally behandelt Erlaubt das Behandeln von Ausnahmen (catch) Erlaubt garantierte Aufräumarbeiten (finally) CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 11 / 1

Exceptions () 1 S t r i n g s t r i n g T o C o n v e r t = 4% ; t r y { 3 I n t e g e r. p a r s e I n t ( s t r i n g T o C o n v e r t ) ; 4 } catch ( NumberFormatException e ) { 5 System. out. p r i n t l n ( s t r i n g T o C o n v e r t + kann n i c h t i n e i n e Zahl k o n v e r t i e r t werden! ) ; 6 } Exceptions und Javadocs Werden in einer Methode Exceptions ausgelöst, sollten sie im Javadoc dokumentiert sein. Das ist für die offiziellen Java-Klassen auch der Fall, wie etwa für Integer.parseInt. Exceptions und Laufzeitfehler Hinweis: Tritt eine Exception auf, liegt ein Laufzeitfehler vor. CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 1 / 1

Exceptions (3) 1 S t r i n g s t r i n g T o C o n v e r t = 4% ; t r y { 3 I n t e g e r. p a r s e I n t ( s t r i n g T o C o n v e r t ) ; 4 } catch ( NumberFormatException e ) { 5 System. out. p r i n t l n ( s t r i n g T o C o n v e r t + kann n i c h t i n e i n e Zahl k o n v e r t i e r t werden! ) ; 6 } Exceptions Ablauf Tritt eine Exception auf, wird ein Exception-Objekt erzeugt, die Ausführung des Codes unterbrochen, die erste passende Catch-Klausel gesucht, und dort mit der Code-Ausführung fortgefahren. Nach Beenden der Catch-Klausel werden alle anderen Catch-Klauseln übersprungen. Tritt keine Exception auf, werden Catch-Klauseln nicht ausgeführt. CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 13 / 1

Exceptions (4) 1 S t r i n g s t r i n g T o C o n v e r t = 4% ; t r y { 3 I n t e g e r. p a r s e I n t ( s t r i n g T o C o n v e r t ) ; 4 } catch ( NumberFormatException e ) { 5 System. out. p r i n t l n ( s t r i n g T o C o n v e r t + kann n i c h t i n e i n e Zahl k o n v e r t i e r t werden! ) ; 6 } Exceptions Eigenschaften Ein Exception-Objekt e hat, eine Klasse mit einem Namen e.getclass().getname(), eine Nachricht e.getmessage(), eine Möglichkeit, den Stack-Trace auf der Konsole auszugeben (e.printstacktrace();). Wird eine Exception nicht gefangen, gibt Java alles drei auf der Konsole aus. CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 14 / 1

Exceptions (5) 1 t r y { 3 } catch (... ) { 4 5 } catch (... ) { 6 7 } Exceptions Code-Wiederholungen Ist eine Exception aufgetreten und in einem Catch-Block behandelt worden, gibt es keine Möglichkeit, automatisch an die Stelle zurückzuspringen, wo die Exception aufgetreten ist. Exceptions Mehrere Catch-Blöcke Zu einem try können mehrere Catch-Blöcke gehören, wenn unterschiedliche Exceptions behandelt werden müssen. CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 15 / 1

Exceptions (6) Exceptions throws Kann eine Methode eine Exception werfen, so wird das üblicherweise per throws in der Methodendeklaration angegeben. 1 i n t d i v i d e ( i n t a, i n t b ) throws A r i t h m e t i c E x c e p t i o n { r e t u r n a / b ; 3 } try-catch-finally Müssen bestimmte Aufräumarbeiten in jedem Fall durchgeführt werden, kann ein Try-Catch-Block mittels eines Finally-Blocks ergänzt werden. finally ist optional. Maximal 1x finally pro try. finally-code wird immer ausgeführt, egal, ob der try-block durch return, eine Exception oder normal beendet wurde. CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 16 / 1

Exceptions (7) 1 t r y { 3 } catch (... ) { 4 5 } f i n a l l y { 6 7 } Hinweis try-finally kann auch ohne catch benutzt werden. Wird oft im Umgang mit Dateien verwendet. 1 t r y { 3 } f i n a l l y { 4 5 } CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 17 / 1

Exceptions (7) 1 t r y { r e t u r n 1 ; 3 } f i n a l l y { 4 r e t u r n 0 ; 5 } Warnung try-finally behandelt keine Exceptions, die würden an den Aufrufer weitergereicht. Behandelt niemand die Exception, wird das Programm beendet. In catch & finally Blöcken können neue Exceptions geworfen werden dann sind eventuell verschachtelte try-blöcke erforderlich. Ein return im finally-block überschreibt ein return im try-block. CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 18 / 1

Exceptions (8) Eigene Exceptions Eigene Exceptions werden mittels throw ausgelöst. Es ist sinnvoll, direkt am Anfang einer Methode die Eingaben zu testen. je schneller Fehler gefunden werden, desto besser (fail-fast). 1 double s q r t ( double d ) { i f ( d < 0 ) { 3 throw new I l l e g a l A r g u m e n t E x c e p t i o n ( Keine n e g a t i v e n Zahlen e r l a u b t! ) ; 4 } 5 r e t u r n Math. s q r t ( d ) ; 6 } CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 19 / 1