Exceptions. Programmiermethodik. Eva Zangerle Universität Innsbruck

Größe: px
Ab Seite anzeigen:

Download "Exceptions. Programmiermethodik. Eva Zangerle Universität Innsbruck"

Transkript

1 Exceptions Programmiermethodik Eva Zangerle Universität Innsbruck

2 Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle Themen Generische Programmierung Java Collection-Framework Libraries Streams Unit-Tests GUI-Programmierung Entwurfsmuster Java Virtual Machine Ausblick Assertions Ausnahmen (Exceptions) 2

3 Motivation Fehler können unerwartet auftreten. Programme müssen auf Fehlersituationen vorbereitet werden und kontrolliert darauf reagieren. In C: Fehler werden über (überladene) Rückgabewerte erkannt. kein einheitliches Vorgehen Rückgabewerte werden nicht immer überprüft Programmfluss unterbrochen In Java Assertions für die Absicherung der inneren Programmlogik Exceptions für das Einhalten beliebiger Randbedingungen Programmiermethodik - Ausnahmebehandlung 3

4 Ausnahmen (Exceptions)

5 Motivation In einem ablaufenden Programm können Fehler auftreten. Logische Fehler im Programm Fehlerhafte Bedienung Falsche Eingaben Probleme im Java-Laufzeitsystem Technische Fehler (Speicherplatz, Klasse von Laufzeitumgebung nicht gefunden) Exceptions (Ausnahmen) sind ein Sprachmittel zur kontrollierten Reaktion auf Laufzeitfehler! Assertions sind ein Sonderfall davon. Programmiermethodik - Ausnahmebehandlung 5

6 Exception Handling Verfahren, das mit dem Eintreten einer Ausnahmesituation (Erfüllen bestimmter Bedingungen) den normalen Programmfluss verlässt Kontrolle geht an Mechanismus der Ausnahmebehandlung über Ausnahme in Java ist ein Exception-Objekt Grundfrage: was ist eine Ausnahmesituation? Programmiermethodik - Ausnahmebehandlung 6

7 Exceptions Vorteile durch Exceptions Fehler (und Exceptions) können nicht ignoriert werden und es müssen Maßnahmen zur Behandlung getroffen werden. Code für Programmablauf und Fehlerbehandlung wird getrennt Übersicht und Wartbarkeit Exception-Code nur an zwei Stellen Stelle, an der der Fehler auftritt Stelle, an der der Fehler behandelt wird Exceptions sind dokumentiert und dokumentierbar Exception-Handling Ausnahmesituationen werden an bestimmten Punkten im Programm abgeprüft (und gemeldet). An einer anderen Stelle im Programm steht Code zur Reaktion auf potenzielle Ausnahmesituationen. Programmiermethodik - Ausnahmebehandlung 7

8 Grundprinzip der Ausnahmebehandlung Information über die Ausnahme wird in ein spezielles Objekt verpackt. Instanz der Klasse Exception (oder einer Subklasse davon) Eine Ausnahme kann auch explizit ausgelöst werden. mit Hilfe von throw Die Ausnahme kann an einer bestimmten Stelle (äußerer Block, aufrufende Methode etc.) in einer catch-klausel abgefangen werden. Grundkonstrukt try catch-anweisung Programmiermethodik - Ausnahmebehandlung 8

9 Die try-catch Anweisung (Grundform) Schema try { regulärer Code, in dem Fehler auftreten kann } catch (ExceptionType1 e) { Code für Fehlerbehandlung } catch (ExceptionType2 e) { Code für Fehlerbehandlung } } catch (ExceptionTypex e) { Code für Fehlerbehandlung } try- und catch-block (bzw. Blöcke) folgen unmittelbar aufeinander. Programmiermethodik - Ausnahmebehandlung 9

10 Ablauf (einfach) Normalfall try { } catch (E1 e){ } catch (E2 e){ } catch (E3 e){ }... Ausnahmefall E1 Ausnahmefall E2 Ausnahmefall E4 E4 muss an einer anderen Stelle behandelt werden. Programmiermethodik - Ausnahmebehandlung 10

11 Ablauf (1) Wird eine Ausnahme vom Typ E geworfen: Dann wird eine entsprechende catch-klausel vom Typ E gesucht. Statt E kann auch eine Klausel mit einer Superklasse von E verwendet werden, da E dort substituiert werden kann! Reihenfolge der catch-klauseln ist entscheidend. Eine Ausnahme wird der Reihe nach mit den catch-klauseln verglichen. Ausgeführt wird die erste catch-klausel, zu der die Ausnahme kompatibel ist. Nachfolgende catch-klauseln werden ignoriert. Daher sollte eine Ordnung der catch-klauseln beachtet werden! Von speziell zu allgemein! Wenn zuerst eine allgemeinere Ausnahme angegeben wird (und dann eine speziellere) dann kommt es zu einem Compiler-Fehler. Programmiermethodik - Ausnahmebehandlung 11

12 Ablauf (2) Falls keine catch-klausel gefunden wird, wird in den äußeren try-blöcken gesucht. In verschachtelten try-blöcken Entlang der Methodenaufrufkette (wird noch besprochen) Wird nie eine catch-klausel gefunden (auch nicht in main), dann bricht das Programm ab. Programmiermethodik - Ausnahmebehandlung 12

13 Termination Model / Resumption Model Termination Model Die Ausnahmebehandlung in Java folgt dem Termination-Model. Der Kontrollfluss kehrt nicht mehr an die Stelle zurück, an der die Ausnahme aufgetreten ist (kehrt an Position nach Catch-Blöcken zurück). Resumption Model Eine Alternative ist das Resumption-Model. Bei diesem Modell erfolgt eine Rückkehr an die Aufrufstelle, d.h. das Programm setzt an der Stelle der Ausnahme fort. Wird nicht in Java verwendet. Programmiermethodik - Ausnahmebehandlung 13

14 Beispiel public final class ExceptionTest { public static void main(final String[] args) { try { int x, y; x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]); System.out.println(x / y); } catch (final NumberFormatException e) { } } System.out.println("Es wurde keine Integerzahl eingegeben!"); Kann parseint() // Zusaetzliche Fehlerbehandlung auftreten. } catch (final ArrayIndexOutOfBoundsException e) { System.out.println("Bitte mindestens 2 Parameter angeben!"); // Zusaetzliche Fehlerbehandlung } catch (final ArithmeticException e) { System.out.println("Division durch 0!"); // Zusaetzliche Fehlerbehandlung } Bei der Division java ExceptionTest Bitte mindestens 2 Parameter angeben! java ExceptionTest 1 a Es wurde keine Integerzahl eingegeben! Programmiermethodik - Ausnahmebehandlung 14

15 Arten von Ausnahmen Systemausnahmen Werden automatisch ausgelöst (illegale Instruktionen) Beispiele ArithmeticException (bei Division durch 0) NullPointerException (Zugriff auf null-zeiger) ArrayIndexOutOfBoundsException (Arrayindex außerhalb des erlaubten Bereichs) Können abgefangen werden, müssen es aber nicht (meist Programmierfehler)! Programmende ohne Abfangen = unchecked exceptions (catch-blöcke werden nicht überprüft beim Kompilieren). Benutzerausnahmen Müssen explizit vom Programmierer ausgelöst werden. throw - Anweisung Java-Bibliothek enthält schon häufige Fehlerarten. z.b. java.io.ioexception Zusätzlich kann man eigene Klassen implementieren und verwenden. Müssen immer abgefangen werden! = checked exceptions (catch-blöcke werden nicht überprüft). Programmiermethodik - Ausnahmebehandlung 15

16 Exception-Klassen Ausnahmen sind in Java Objekte. Enthalten Informationen über die aufgetretenen Fehler. Bieten Methoden an, um auf die Informationen zuzugreifen. Alle Ausnahmen sind in einer Klassenhierarchie gruppiert. Allgemeine Klasse Exception Diverse Unterklassen für spezifische Ausnahmen Dient zur Differenzierung Eine catch-klausel, die eine Klasse E behandeln kann, kann auch alle Unterklassen von E behandeln. Programmiermethodik - Ausnahmebehandlung 16

17 Hierarchie Oberste Klasse ist java.lang.throwable Enthält Methoden zur Fehleranalyse String getmessage() (Text bei Ausnahme) String tostring() (Klassenname + getmessage()) void printstacktrace() Methoden-Aufrufe auf Stack verwaltet Konstruktoren (leer, mit Fehlermeldung, ) Unterklassen java.lang.error Irreparable Fehler java.lang.exception Fehler, die sinnvoll behandelt werden können Es existieren schon bestimmte Subklassen für die Fehlerbehandlung! Programmiermethodik - Ausnahmebehandlung 17

18 Hierarchie (Übersicht, teilweise) Programmiermethodik - Ausnahmebehandlung 18

19 Error Error sind Fehler, die mit der JVM in Verbindung stehen. Beispiel Zu wenig Speicher für die JVM bei der Objekterzeugung vorhanden - OutOfMemoryError Da die Fehler abnormales Verhalten anzeigen, müssen sie auch nicht mit einer catch-klausel aufgefangen werden Ein Auffangen macht wenig Sinn. Wie sollte man auf solch einen Fehler reagieren? Programmiermethodik - Ausnahmebehandlung 19

20 Exception-Hierarchie Exception RuntimeException ArithmeticException NullPointerException IndexOutOfBoundsException. IOException. InterruptedException MyException. Vordefinierte Ausnahmen Selbst definierte Ausnahmen Systemausnahmen (Unchecked Exceptions) Benutzerausnahmen (Checked Exceptions) Programmiermethodik - Ausnahmebehandlung 20

21 Eigene Klasse / Ausnahme auslösen Von der Klasse Exception ableiten class MyException extends Exception { } Hat nur einen Defaultkonstruktor Wenn man eine Nachricht mitgeben möchte: class MyException extends Exception { public MyException(){} public MyException(final String specialinfo){ super(specialinfo); } } Auslösen ( Werfen ) einer Ausnahme mit der throw Anweisung: throw new MyException(); throw new MyException("Falsche Eingabe"); Die throw-anweisung unterbricht den laufenden Code sofort! Siehe externes Beispiel ResourceLoader.java bzw. StackException.java Programmiermethodik - Ausnahmebehandlung 21

22 Weiterreichen von Exceptions Methoden müssen ihre Ausnahmen nicht lokal behandeln, sondern können sie auch weiterreichen. Der Benutzer einer Methode muss mit einer Exception- Signatur darauf hingewiesen werden. Form returntype name(parameterlist) throws exceptiontype1, exceptiontype2 z.b. int test(int x) throws IOException { } Zeigt dem Aufrufer an, dass eine bestimmte Ausnahme geworfen werden könnte. Sollte möglichst spezifisch sein. Wird vom Compiler überprüft (checked exception). Fehlende oder falsche Angaben werden gemeldet. Programmiermethodik - Ausnahmebehandlung 22

23 Weiterreichen von Exceptions (2) Ausnahmen können durchgereicht werden. Methode generiert die Ausnahme nicht selbst, sondern ruft eine Methode auf, die eine Ausnahme generiert. Eine Methode muss in ihrer Signatur angeben: Die Typen der selbst ausgelösten Ausnahmen Die Typen aller Ausnahmen aller aufgerufenen Methoden (RuntimeException und Subklassen davon müssen nicht angegeben werden) Compiler stellt sicher, dass keine Ausnahme einer untergeordneten Methode übersehen wird. Siehe Beispiel ArrayStack.java und StackTest.java Programmiermethodik - Ausnahmebehandlung 23

24 Überladen und Überschreiben Überladen Exception-Signaturen überladener Methoden sind völlig unabhängig. Unterschiedliche Exception-Signaturen reichen nicht aus, um Methoden zu überladen. Überschreiben Exception-Signatur darf bei der Redefinition der Methode dieselben Exceptions wie Oberklasse auslösen Exceptions spezialisieren Exceptions weglassen Bei der Redefinition dürfen in der Exception-Signatur alle Typen aufscheinen, die zu irgendeinem Typ in der Signatur irgendeiner direkten oder indirekten Basisklassenmethode kompatibel sind (auch mehrere Subklassen für eine Exceptionklasse). Siehe externes Beispiel Stack.java bzw. ArrayStack.java Programmiermethodik - Ausnahmebehandlung 24

25 finally Der try catch-block kann nach den catch-klauseln eine finally-klausel enthalten. Die Anweisungen in der finally-klausel werden immer als Abschluss der try-anweisung ausgeführt, egal ob eine Ausnahme auftrat oder nicht. Hat den Zweck Arbeiten, die im try - Block begonnen wurden, sauber abzuschließen. Beispiel Im try-block wird eine Datei geöffnet. Die Datei muss wieder geschlossen werden (egal ob bei der Verarbeitung der Daten ein Fehler auftritt oder nicht). Hinweis: In Java 7 gibt es noch eine andere Möglichkeit. Diese wird im Foliensatz über Streams noch ausführlich besprochen. Auch bei verschachtelten try-anweisungen möglich! Programmiermethodik - Ausnahmebehandlung 25

26 finally (Abarbeitung) try { } catch (E1 e){ } catch (E2 e){ } finally { } Normalfall Ausnahmefall E1 Ausnahmefall E3 E3 wird in der aufrufenden Methode behandelt. Siehe externes Beispiel FinallyTest.java Programmiermethodik - Ausnahmebehandlung 26

27 Exception-Chaining Wenn Methoden Ausnahmen immer weiterreichen Sehr lange Exception-Signaturen Detailfehler auf niederer Ebene müssen an ganz anderer Stelle behandelt werden. Änderungen in der Exception-Signatur würden viele Veränderungen nach sich ziehen. Lösung Exception-Chaining Mehrere Ausnahmen untergeordneter Aufrufe werden aufgefangen. Die Ausnahmen werden zusammengefasst und in einer neuen Ausnahme weitergegeben. Programmiermethodik - Ausnahmebehandlung 27

28 Exception-Chaining (Allgemeines Schema) Allgemeines Schema try { }catch(e1 ex){ throw new MyException(ex); }catch(e2 ex){ throw new MyException(ex); } Ausnahme vom Typ E1 wird in eine Ausnahme vom Typ MyException verpackt. Programmiermethodik - Ausnahmebehandlung 28

29 Chaining bei eigenen Ausnahmen Entsprechende Konstruktoren implementieren Exception-Klasse gibt Beispiele für solche Konstruktoren: Exception(String message, Throwable cause) Exception(Throwable cause) Beispiel für Konstruktor für die MyException-Klasse: MyException(Throwable cause){super(cause);} Oder initcause-methode verwenden: catch (E1 ex) { MyException m = new MyException(); m.initcause(ex); throw m; } Siehe externes Beispiel ResourceLoader.java Programmiermethodik - Ausnahmebehandlung 29

30 Konstruktoren und Ausnahmen Ausnahmen können auch in Konstruktoren verwendet werden. Fehler beim Anlegen eines Objekts sollten vermieden werden. Objekt könnte in einem inkonsistenten Zustand sein. Der Konstruktor sollte die Ausnahme weiterreichen (throws). Aufrufende Methode kann dann entsprechend auf die gescheiterte Erzeugung des Objekts reagieren. Aber: Vorsicht bei finally! wird immer aufgerufen Programmiermethodik - Ausnahmebehandlung 30

31 Debugging von Ausnahmen Die Klasse Throwable liefert einige Methoden (implementierte Klasse). printstacktrace Liefert den Aufrufstack der Methoden. getstacktrace Erlaubt Zugriff auf Stack-Trace-Elemente. getmessage Liefert den Fehlerstring einer Ausnahme (wenn vorhanden). Anwendung (Beispiel) catch(myexception e){ e.printstacktrace(); } Siehe externes Beispiel FinallyTest.java Programmiermethodik - Ausnahmebehandlung 31

32 Java 7 - Multi-Catch (1) Manchmal möchte man mehrere Ausnahmetypen gleichartig behandeln und dafür nur eine catch-klausel verwenden. In Java 7 ist nun das Fangen mehrerer Ausnahmen mit nur einem catch-block möglich. Wird als Multi-Catch bezeichnet. Bei der Aufzählung werden die einzelnen Ausnahmen mit getrennt. Die Variable (im unteren Beispiel e) ist implizit final. Beispiel: try { Hier können sowohl Ausnahmen vom Typ MyException als auch vom Typ OtherException geworfen werden. } catch (MyException OtherException e) { } Gemeinsame Behandlung der unterschiedlichen Ausnahmen Programmiermethodik - Ausnahmebehandlung 32

33 Java 7 - Multi-Catch (2) Die Abarbeitung erfolgt wie bei mehreren catch-blöcken. Neben den Standard-Tests kommen neue Überprüfungen hinzu, ob etwa die exakt gleiche Ausnahme zweimal in der Liste ist oder ob es Widersprüche durch Mengenbeziehungen gibt. Umsortierung der Ausnahmetypen bringt in diesem Fall nichts! Beispiel für fehlerhaftes Multi-Catch (Mengenbeziehung): try { new RandomAccessFile("", ""); } catch (FileNotFoundException IOException e) { } Programmiermethodik - Ausnahmebehandlung 33

34 Java 7 Final Rethrow (1) Immer dann, wenn in einem catch-block ein throw stattfindet, ermittelt der Compiler die im try-block tatsächlich aufgetretenen geprüften Ausnahmetypen. Der im catch genannte Typ für das rethrow wird nicht berücksichtigt. Statt dem gefangenen Typ wird der Compiler den durch die Codeanalyse gefundenen Typ beim rethrow melden. Allgemeine Exception catchen, spezielle Exception throwen. Programmiermethodik - Ausnahmebehandlung 34

35 Java 7 Final Rethrow (2) class Exception_A extends Exception {} class Exception_B extends Exception {} public class Test1 { private void method_a() throws Exception_A {} private void method_b() throws Exception_B {} private static void method_c() throws Exception_A, Exception_B { Test1 l = new Test1(); try { l.method_a(); l.method_b(); } catch (Exception x) { throw x; } } } Programmiermethodik - Ausnahmebehandlung 35

36 Allgemeine Regeln Behandlung Behandle auftretende Ausnahmen, wenn dies sinnvoll möglich ist. Propagiere im Zweifelsfall Ausnahmen an höhere Aufrufebenen weiter. Dabei sollte aber immer ein möglichst aussagekräftiger Ausnahmetyp gewählt werden! Art der Ausnahme Wenn ein Aufrufer eine außergewöhnliche Situation behandeln kann, so sollte eine Benutzerausnahme (checked exception) geworfen werden. Ist ein Aufrufer nicht in der Lage, eine Fehlersituation zu korrigieren, so verwendet man eine Systemausnahme (unchecked exception). Programmiermethodik - Ausnahmebehandlung 36

37 Verwendung von Ausnahmen (1) Ausnahmen werden oft für Preconditions verwendet. Preconditions beziehen sich meist auf Parameter. Die Parameter dürfen meist nicht beliebige Werte annehmen. Ohne Überprüfung kann ein Objekt in einem falschen (inkonsistenten) Zustand sein. Verwendung von try-catch try-catch findet sich meist in übergeordneten Methoden. Je mehr über den aktuellen Programmzustand vorhanden ist, desto besser lässt sich angemessen auf einen Fehler reagieren. Programmiermethodik - Ausnahmebehandlung 37

38 Verwendung von Ausnahmen (2) Eigene Klassen definieren Trade-Off Viele Einzelklassen Feingranulare Behandlung, aber lange Exception-Signaturen oder catch-listen Wenige Einzelklassen Weniger Abfragen, aber schlechte Differenzierung Hierarchien aufbauen (Subklassen von Exception oder RuntimeException) Spezielle Klassen für differenzierte Fehlersituationen Spezielle Klassen nach Fehlerart gruppieren und mit gemeinsamen Basisklassen versehen Detaillierte Ausnahmen anbieten Ausnahme beinhalten weitere Objektvariablen, Beim Werfen der Ausnahme werden diese Objektvariablen belegt (z.b. mit den falschen Parameterwerten etc.) Damit kann der Programmierer auf mehr Information zugreifen! Wann von RuntimeException ableiten? Wenn der Benutzer der Klasse das Problem von vornherein vermeiden kann! RuntimeExceptions stehen meist mit Programmier- und Denkfehlern in Zusammenhang. Programmiermethodik - Ausnahmebehandlung 38

39 Verwendung von Ausnahmen (3) Ausnahmen sollten auch dokumentiert werden Auszug aus "How to Write Doc Comments for the Javadoc Tool": Programmiermethodik - Ausnahmebehandlung 39

40 Verwendung der verschiedenen Basisklassen Abfangen in catch-klauseln Error - nein Exception - nein (würde alle Subklassen abfangen), nur Subklassen davon! RuntimeException nein, eigentlich ein Fehler im Programm, der behoben werden sollte! Werfen Error - ja, eventuell auch eigene Unterklasse! Exception nein (zu allgemein), nur Unterklassen! RuntimeException ja, mit einer eigenen oder einer entsprechenden Subklasse! Programmiermethodik - Ausnahmebehandlung 40

41 Ausnahmen Don't Niemals eine Ausnahme verschwinden lassen! try {... } catch (MyException e) {} Fehler verschwinden nicht von selbst! Programm wird möglicherweise nicht richtig funktionieren (inkonsistente Daten etc.). Ausnahmen sollten niemals Kontrollstrukturen ersetzen!!! Z.B. bei einem Arraydurchlauf nicht auf die Länge überprüfen, sondern auf Ausnahme warten und dann abfangen. Rückgabe von null statt einer Ausnahme im Fehlerfall Ausnahmen müssen behandelt werden, null kann ignoriert werden! Rückgabe von null ist nur in sehr wenigen Fällen sinnvoll. Muss in der aufrufenden Methode separat behandelt werden. Programmiermethodik - Ausnahmebehandlung 41

42 Assertions

43 Assertions allgemein Eine Assertion (Zusicherung) ist ein boolescher-ausdruck, der immer zutreffen muss. Assertions werden beim Programmablauf von der JVM überwacht. Programmabbruch, wenn eine Assertion nicht zutrifft (Error)! Assertions sind einfache Anweisungen. Form assert ausdruck; assert ausdruck:string; ausdruck muss immer true liefern, string enthält eine Fehlermeldung. Beispiele assert a <= b && b <= c; assert x >= 0: "Positives x"; Programmiermethodik - Ausnahmebehandlung 43

44 Arbeitsweise Assertions werden zur Laufzeit ausgewertet. Wenn das Ergebnis false ist, stoppt das Programm mit einem AssertionError. Die nachfolgenden Anweisungen werden nicht mehr ausgeführt. Bei Abbruch wird Information über den Ort der gescheiterten Assertion ausgegeben. Programmiermethodik - Ausnahmebehandlung 44

45 Aktivierung Assertions kosten Rechenzeit. Sie können zur Laufzeit wahlweise aktiviert werden. Deaktiviert sind sie automatisch! Programm muss nicht neu übersetzt werden. Aktivierung im Programm Test (enable assertions) java ea Test Deaktivierung (default, muss nicht angeführt werden; disable assertions) java da Test In Eclipse Unter Run->RunConfigurations Reiter Arguments auswählen. -ea im Feld Vm arguments angeben. Normalerweise während der Entwicklungszeit! Programmiermethodik - Ausnahmebehandlung 45

46 Selektive Aktivierung Assertions können auch selektiv auf der Ebene von Klassen und Packages getrennt aktiviert werden. Assertions in Klasse classname aktivieren: -ea:classname Assertions in Package packagename (3 Punkte müssen angegeben werden): -ea:packagename Mehrere Schalter erlaubt: java -ea:project2 -da:project2.datastore -ea:project2.datastore.store Test Programmiermethodik - Ausnahmebehandlung 46

47 Einsatz von Assertions Sind für Bedingungen geeignet, deren Einhaltung vom Programm selbst garantiert werden kann. z.b. am Ende einer Methode Rechenergebnisse absichern. Nicht für Bedingungen geeignet, die von irgendwelchen äußeren Einflüssen abhängen. z.b. am Anfang einer öffentlichen Methode die Werte der Parameter überprüfen. Programmiermethodik - Ausnahmebehandlung 47

48 Anwendung Überprüfung von Parametern, die an nicht-öffentliche Methoden übergeben werden (nur falsch, wenn das eigene Programm fehlerhaft ist). Verwendung in Postconditions, die am Ende einer Methode erfüllt sein müssen. Überprüfung von Schleifeninvarianten. Markierung von "toten Zweigen" in if- oder case- Anweisungen, die normalerweise niemals erreicht werden sollten (Assertion mit false als Argument). Programmiermethodik - Ausnahmebehandlung 48

49 Beispiel public class AssertionTest { private static int max(final int x, final int y) { return x < y? x : y; } private static int min(final int x, final int y) { return x > y? x : y; } Denkfehler - Falsche Implementierungen! Hier sollten korrekte Werte in maximum und minimum vorhanden sein! } private static void test(final int x, final int y) { final int maximum = AssertionTest.max(x, y); final int minimum = AssertionTest.min(x, y); assert maximum >= minimum : "Maximum kleiner als Minimum"; System.out.println(maximum + " " + minimum); } public static void main(final String[] args) { AssertionTest.test(10, 15); AssertionTest.test(8, 3); AssertionTest.test(2, 2); java AssertionTest } java ea AssertionTest Exception in thread main java.lang.assertionerror: Maximum kleiner als Minimum at AssertionTest.test(AssertionTest.java:13) at AssertionTest.main(AssertionTest.java:18) Programmiermethodik - Ausnahmebehandlung 49

50 Private Invarianten-Methoden (1) Objektvariablen dürfen meist nicht beliebige Werte annehmen. Es gelten bestimmte Bedingungen. Bedingungen werden als Klasseninvarianten bezeichnet. Diese Bedingungen gelten für jedes Objekt der Klasse. Bedingungen können während der Ausführung einer Methode kurzfristig verletzt werden. Vor dem Aufruf und nach der Rückkehr müssen die Invarianten immer gelten. Klasseninvarianten können komplex sein. Mehrere Objektvariablen müssen berücksichtigt werden. Test kann aufwändig sein. Muss möglicherweise an vielen Stellen erfolgen. Programmiermethodik - Ausnahmebehandlung 50

51 Private Invarianten-Methode (2) Private Invarianten-Methoden Test der Klasseninvarianten wird in eine boolean-methode gegeben. Enthält keine Assertions. Wird in anderen Methoden bei Assertions verwendet. Beispiel public class Rational { private int denom; private boolean invariantholds() { return denom!= 0; } public void reduce() { assert this.invariantholds(); } public void invert() { assert this.invariantholds(); } } Programmiermethodik - Ausnahmebehandlung 51

52 Kompatibilität Assertions gibt es in Java erst seit der Version 1.4.! Voraussetzungen für Assertions: JDK-1.4.-Compiler 1.4.-kompatibles Laufzeitsystem Programmiermethodik - Ausnahmebehandlung 52

Exceptions. Programmiermethodik. Eva Zangerle Universität Innsbruck

Exceptions. Programmiermethodik. Eva Zangerle Universität Innsbruck Exceptions Programmiermethodik Eva Zangerle Universität Innsbruck Motivation Fehler können unerwartet auftreten. Programme müssen auf Fehlersituationen vorbereitet werden und kontrolliert darauf reagieren.

Mehr

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

Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling) Grundlagen der Programmierung Prof. H. Mössenböck 16. Ausnahmen (Exception Handling) Motivation Fehler können nicht immer dort behandelt werden, wo sie auftreten void p() { q(); Lösung void q() { r();

Mehr

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

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10.  Institut für Angewandte Informatik Programmieren I Fehlerbehandlung Exceptions Heusch 2. Bd, 3 Ratz 10 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Exceptions und ihre Behandlung Exception - Ausnahmebedingung

Mehr

Vorlesung 10. Sitzung Grundlegende Programmiertechniken

Vorlesung 10. Sitzung Grundlegende Programmiertechniken Vorlesung 10. Sitzung Grundlegende Programmiertechniken Wintersemester 2007/2008 Dozent Nino Simunic M.A. Computerlinguistik, Campus DU Grundlegende Programmiertechniken, WS 2007/2008 Objektorientierte

Mehr

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

Grundlagen der Fehlerbehandlung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 06: Ausnahme- und Fehlerbehandlung in Java. Universität Osnabrück 1 Grundlagen der Fehlerbehandlung 3 - Objektorientierte Programmierung in Java Vorlesung 06: Ausnahme- und Fehlerbehandlung in Java SS 2006 Prof. Dr. F.M. Thiesing, FH Osnabrück Wenn

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

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

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren Ausnahmebehandlung Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren Ausnahmen abfangen Ausnahmen definieren Sinnvolle Verwendung von Ausnahmen Informatik II: Objektorientierte SW-Entwicklung, Algorithmik,

Mehr

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

Exception. 6. Exceptions. Die Klasse java.lang.exception. Fehlermeldung. Klassenname. Ort des Auftretens 6. Exceptions Exception Hintergrund: Programmieren auf der Basis von Verträgen Kundenklasse Lieferantenklasse Eine Exception ist ein Objekt, das Informationen über einen Programmfehler enthält. Eine Exception

Mehr

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

9. Fehler und Ausnahmen Grundlagen der Programmierung 1 (Java) 9. Fehler und Ausnahmen Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 13. Dezember 2005 Einordnung im Kontext der

Mehr

1 Fehler-Objekte: Werfen, Fangen, Behandeln

1 Fehler-Objekte: Werfen, Fangen, Behandeln 1 Fehler-Objekte: Werfen, Fangen, Behandeln Tritt während der Programm-Ausführung ein Fehler auf, wird die normale Programm-ausführung abgebrochen und ein Fehler-Objekt erzeugt (geworfen). Die Klasse Throwable

Mehr

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

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des

Mehr

15 Fehlerobjekte: Werfen, Fangen, Behandeln

15 Fehlerobjekte: Werfen, Fangen, Behandeln Tritt während der Programm-Ausführung ein Fehler auf, wird die normale Programm-ausführung abgebrochen und ein Fehlerobjekt erzeugt (geworfen). Die Klasse Throwable fasst alle Arten von Fehlern zusammen.

Mehr

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

15 Fehlerobjekte: Werfen, Fangen, Behandeln. Idee. Fehlerklassen. Fehlerklassen Idee Tritt während der Programm-Ausführung ein Fehler auf, wird die normale Programm-ausführung abgebrochen und ein Fehlerobjekt erzeugt (geworfen). Die Klasse Throwable fasst alle Arten von Fehlern zusammen.

Mehr

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

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally Themen der Übung CoMa-Übung VI 1 Organisatorisches Compilezeit- und Laufzeitfehler 3 Try-Catch-Finally TU Berlin 8.11.01 Bewertung der OA 5 fehlerhaft, Madeleine arbeitet dran CoMa-Übung VI (TU Berlin)

Mehr

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

Exceptions. CoMa-Übung VII TU Berlin. CoMa-Übung VII (TU Berlin) Exceptions / 1 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)

Mehr

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

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

15 Fehlerobjekte: Werfen, Fangen, Behandeln

15 Fehlerobjekte: Werfen, Fangen, Behandeln Tritt während der Programm-Ausführung ein Fehler auf, wird die normale Programm-ausführung abgebrochen und ein Fehlerobjekt erzeugt (geworfen). Die Klasse Throwable fasst alle Arten von Fehlern zusammen.

Mehr

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

3. Exceptions. Hintergrund: Programmieren auf der Basis von Verträgen. Kundenklasse. Lieferantenklasse 3. Exceptions Prinzipien von Exceptions 3. Exceptions Hintergrund: Programmieren auf der Basis von Verträgen Kundenklasse Lieferantenklasse Methodenaufruf Verpflichtung zur Einhaltung der Vorbedingung

Mehr

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

Exceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero Exceptions Prof. Dr. Margarita Esponda SS 2012 1 Ausnahmen Eine Ausnahme (Exception) ist ein Fehler oder ein nicht geplantes Ereignis, das während der Ausführung eines Programms vorkommt und dessen normalen

Mehr

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

Ausnahmen. Exceptions. Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten. Dr. Beatrice Amrhein Ausnahmen Exceptions Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten Dr. Beatrice Amrhein Definition 2 Definition: Ausnahme (Exception) In C# werden Fehler, die zur Laufzeit im

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 10 Ausnahmebehandlung (Exceptions) Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN

Mehr

Java Fehlerbehandlung

Java Fehlerbehandlung Java Fehlerbehandlung 1 Fehlerbehandlung In jedem nicht-trivialen Programm kann es während der Laufzeit zu Fehlersituationen kommen. Dabei handelt es sich nicht unbedingt um Programmierfehler: z. B.: Programm

Mehr

1.7 Fehler- und Ausnahmebehandlung

1.7 Fehler- und Ausnahmebehandlung 1.7 Fehler- und Ausnahmebehandlung Ein Beispiel: class PhoneBook { int capacity; String names[]; int numbers[]; int count; PhoneBook(int cap) { capacity = cap; names = new String[cap+1]; numbers = new

Mehr

Enumerations und innere Klassen

Enumerations und innere Klassen Enumerations und innere Klassen Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung

Mehr

Java : Fehlerbehandlung.

Java : Fehlerbehandlung. Java : Fehlerbehandlung Prinzip Callerklassen / Workerklassen Arbeitet... Callerklasse Arbeitet... Workerklasse Arbeitet... Arbeitet weiter... Fer7g! Prinzip Callerklassen / Workerklassen Main- Methode

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Ausnahmen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Ausnahmen (Exceptions) Motivation Fehlerbehandlung Klassenhierarchie Checked vs. Unchecked

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt 26.03.2014 tobias.witt@hhu.de 25.12.01.30 Bürozeiten: 09 Uhr - 12 Uhr FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert

Mehr

Java Einführung Exception Handling. Kapitel 17

Java Einführung Exception Handling. Kapitel 17 Java Einführung Exception Handling Kapitel 17 Inhalt Was sind Exceptoins? Wie werden sie ausgelöst? Wie kann man Exceptions behandeln? Erweiterung von Exceptions Spezialfall IO 2 Ausnahmezustände Im Ablauf

Mehr

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

Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. Beispiel: NumberFormatException public class Adding extends MiniJava { public static void main(string[] args) { int

Mehr

Grundlagen der Programmierung. Kapitel 9: Ausnahmen. Überblick. Fehlerbehandlung in Software-Systemen. Ziel der Vorlesung

Grundlagen der Programmierung. Kapitel 9: Ausnahmen. Überblick. Fehlerbehandlung in Software-Systemen. Ziel der Vorlesung Überblick Grundlagen der Programmierung Dr. Christian Herzog Technische Universität München Ausnahme: ein Ereignis, das den normalen Programmfluss ändert. Ausnahmen in Java Programmierung von Ausnahmen

Mehr

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions Kapitel 10 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Exceptions Behandlung von Exceptions Verschiedene Exceptions Mehrere catch-anweisungen Der finally-block WS

Mehr

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

Ausnahmenbehandlung in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Ausnahmenbehandlung in Java Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Was sind Exceptions? Eine Ausnahme (Exception) ist ein Objekt einer Unterklasse von Throwable Eine Ausnahme

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

5.13 Umgang mit Fehlern

5.13 Umgang mit Fehlern 5.13 Umgang mit Fehlern Klassifikation von Fehlern: Syntaxfehler: Lexikalische Fehler: Falsche oder unbekannte Worte String s neu String("Max"); Falsche Anordnung von Anweisungen: Falscher Typ: import

Mehr

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

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf 16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen

Mehr

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf Teil II Objektorientierte Programmierung und objektorientierter Entwurf 39 Kapitel 8 Robuste Programme durch Ausnahmebehandlung Ziele: Lernen, robuste Programme zu schreiben Ausnahmen als Objekte verstehen

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Exceptions und Vererbung

Exceptions und Vererbung Exceptions und Vererbung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter 2. Exceptions Eigene Exceptions Handling

Mehr

Objektorientierte Programmierung. Kapitel 13: Exceptions

Objektorientierte Programmierung. Kapitel 13: Exceptions Stefan Brass: OOP (Java), 13. Exceptions 1/39 Objektorientierte Programmierung Kapitel 13: Exceptions Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/

Mehr

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

Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden Exceptions Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden int a; double b=10; a = 10 * b; System.out.println(a); Fehler die während der Programmausführung

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 12. Fehler und Ausnahmen 1 Kapitel 12 Ziele 2 Fehlerquellen in Programmen und bei der Programmausführung kennenlernen Das Java-Konzept der Ausnahmen als Objekte verstehen Ausnahmen auslösen können Ausnahmen behandeln können Fehlerhafte

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 4 und Exception Handling 2 Übersicht der heutigen Inhalte Interfaces Modifikatoren bei der Klassendefinition Exception Handling

Mehr

Kapitel 9: Klassen und höhere Datentypen. Selektoren

Kapitel 9: Klassen und höhere Datentypen. Selektoren Selektoren Üblicherweise erlaubt man keinen (direkten) öffentlichen (public) Zugang zu Objektvariablen mehr Kontrolle über Zugang interne Details besser verborgen Statt dessen: Zugriff auf privates Feld

Mehr

12. Advanced Features, Abschluss

12. Advanced Features, Abschluss 12. Advanced Features, Abschluss Abstrakte Klassen Ausnahmen Rückblick und Ausblick László Böszörményi ESOP Abschluss - 1 12. 1. Abstrakte Klassen Am oberen Ende einer Hierarchie finden wir oft eine reine

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 12 Ausnahmebehandlung (Exceptions) Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

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

Java - Fehler im Code. Leibniz Universität IT Services Anja Aue Java - Fehler im Code Leibniz Universität IT Services Anja Aue Softwarefehler Programmierfehler entstehen beim Schreiben des Programmcodes. Logische Fehler können durch Denkfehler bei der Umsetzung der

Mehr

Java I Vorlesung Exceptions

Java I Vorlesung Exceptions Java I Vorlesung 8 Exceptions 14.6.2004 Exceptions (Ausnahmen) Klassen für Ein- und Ausgabe Ausnahmen Ausnahmen (Exceptions) sind ein Mechanismus zum kontrollierten Melden und Reagieren auf Fehler. Man

Mehr

7. Java Fehler und Ausnahmen

7. Java Fehler und Ausnahmen Fehler und Ausnahmen in Java 7. Java Fehler und Ausnahmen Fehler und Ausnahmen unterbrechen die normale Programmausführung abrupt und stellen eine nicht geplantes Ereignis dar. Ausnahmen sind böse, oder

Mehr

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

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

Mehr

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

Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte) Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 1 Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte) Was ist der Unterschied zwischen a) einem Objekt und einer Klasse? b) der Instanz einer Klasse

Mehr

4.5 Exceptions. TU Darmstadt Allgemeine Informatik II, SS 05

4.5 Exceptions. TU Darmstadt Allgemeine Informatik II, SS 05 4.5 Exceptions In der Abarbeitung eines Methodenaufrufs kann die Methode immer potentiell auf Probleme stoßen, mit denen sie selbst nicht umzugehen weiß. Exceptions geben einer Methode die Möglichkeit,

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Objektorientierte Programmierung. Kapitel 18: Exceptions II

Objektorientierte Programmierung. Kapitel 18: Exceptions II 18. Exceptions II 1/51 Objektorientierte Programmierung Kapitel 18: Exceptions II Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

15 Fehler-Objekte: Werfen, Fangen, Behandeln

15 Fehler-Objekte: Werfen, Fangen, Behandeln 15 Fehler-Objekte: Werfen, Fangen, Behandeln Tritt während der Programm-Ausführung ein Fehler auf, wird die normale Programm-ausführung abgebrochen und ein Fehler-Objekt erzeugt (geworfen). Die Klasse

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 12. Exceptions.1 12 Exceptions 12 Exceptions Java unterscheidet drei Arten von Ereignissen: Events: Interaktionsereignisse mit dem GUI (siehe Kapitel 10) Errors: Interne schwerwiegende Fehler in der JVM

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

Die Klasse java.lang.object. Thorsten Treffer

Die Klasse java.lang.object. Thorsten Treffer Die Klasse java.lang.object Thorsten Treffer 6. Dezember 2003 1 java.lang.object Die Klassenhierarchie von Java kann als Baum aufgezeichnet werden, dessen Wurzel die Klasse Object ist. Mit anderen Worten:

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions Kapitel 10 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Exceptions Behandlung von Exceptions Der finally-block catch or throw WS 07/08 1/ 23 2/ 23 Grundlagen von Exceptions

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Enumerationen. Einführung. Probleme. Enumerationen. Wir benötigen in Programmen manchmal vordefinierte Menge von Werten.

Enumerationen. Einführung. Probleme. Enumerationen. Wir benötigen in Programmen manchmal vordefinierte Menge von Werten. Enumerationen Einführung Wir benötigen in Programmen manchmal vordefinierte Menge von Werten Sie können eigene Aufzählungstypen deklarieren Sie verwenden Aufzählungstypen situationsgerecht Beispiele: Wochentage

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Ausnahmebehandlung OOPM, Ralf Lämmel

Ausnahmebehandlung OOPM, Ralf Lämmel Schon mal einen Blue Screen gesehen? Ausnahmebehandlung OOPM, Ralf Lämmel 927 Beispiele für Ausnahmesituationen Programmfehler precondition failed Unzulässige Nutzereingabe bad url Nichtverfügbarkeit von

Mehr

1.) Behandlung von Laufzeitfehlern in Visual Basic

1.) Behandlung von Laufzeitfehlern in Visual Basic 1.) Behandlung von Laufzeitfehlern in Visual Basic Laufzeitfehler sind Fehler, die während der Programmausführung (Laufzeit) auftritt. Laufzeitfehler werden in der Regel nicht direkt durch den Programmcode,

Mehr

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

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Fehlerbehandlung und Ein- und Ausgabe Titel der Präsentation 2 Fehler = Exceptions? Die Exception- bzw. Ausnahmebehandlung in Java ist eine spezielle Form der Fehlerbehandlung Typischerweise

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 8. September 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

Mehr

Objektorientierte Programmierung. Kapitel 18: Exceptions II

Objektorientierte Programmierung. Kapitel 18: Exceptions II Stefan Brass: OOP (Java), 18. Exceptions II 1/50 Objektorientierte Programmierung Kapitel 18: Exceptions II Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Programmiermethodik 1. Klausur

Programmiermethodik 1. Klausur Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

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

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A 2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Programmiermethodik 3. Klausur Lösung

Programmiermethodik 3. Klausur Lösung Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Teil 9: Unified Modeling Language Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München Stack

Mehr

Algorithmen und Programmierung III WS 05/06

Algorithmen und Programmierung III WS 05/06 Algorithmen und Programmierung III WS 05/06 Übungsblatt 4 - Abgabe vor der Vorlesung 15.11.05 Aufgabe 0 (Wiederholung) [Optional] Ausnahmen (throw, catch, finally, throws, Behandlung, Laufzeitausnahmen,

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Strukturierte Ausnahmebehandlung Exceptions

Strukturierte Ausnahmebehandlung Exceptions Strukturierte Ausnahmebehandlung Exceptions Bedeutung der Ausnahmebehandlung Exkurs: assert Strukturierung: try, catch, finally, throw Korrektes Werfen + Fangen finally-verhalten (Initialisierung + Rückgabewerte)

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Wiederholung zur Vorlesung Programmieren

Wiederholung zur Vorlesung Programmieren Wiederholung zur Vorlesung Jan 2007 Wintersemester 2007/2008 Computerlinguistik, Campus DU Einstieg Erläutern sie in knappen Worten die notwendigen Schritte um ein einfaches Java-Programm zu schreiben

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Praktische Softwaretechnologie Vorlesung 4

Praktische Softwaretechnologie Vorlesung 4 Praktische Softwaretechnologie Vorlesung 4 Martin Giese Johann Radon Institute for Computational and Applied Mathematics Österr. Akademie der Wissenschaften Linz PSWT 2006 31. Oktober 2006 p.1/28 Die Klasse

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Grundlagen der Informatik Ausnahmebehandlung & Threads

Grundlagen der Informatik Ausnahmebehandlung & Threads Grundlagen der Informatik Ausnahmebehandlung & Threads Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Inhalt Ausnahmebehandlung

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

1.5. Strukturierte Anweisungen

1.5. Strukturierte Anweisungen 1.5. Strukturierte Anweisungen Switch-Anweisung (C++): Initialisierungen dürfen nicht 'übersprungen' werden: switch (i) { int v1 = 2; // ERROR: jump past initialized variable case 1: int v2 = 3; //...

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr