Auf dieser und den beiden folgenden Folien wurde jeweils ein neues Objekt der Klasse FigurMalerei erstellt und die angegebene Methode ausgeführt.

Ähnliche Dokumente
Kapitel 9. Ausnahmebehandlung in Java. Skript zur Vorlesung Einführung in die Programmierung

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

Abschnitt 7: Weitere Konzepte der oo Programmierung in Java

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

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

9. Ausnahmebehandlung

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

1 Fehler-Objekte: Werfen, Fangen, Behandeln

Johannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Weiterführende Spracheigenschaften

Ausnahmen (Exceptions)

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

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

Ausnahmen. Philipp Wendler. Zentralübung zur Vorlesung 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. Dr. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

II.4.4 Exceptions - 1 -

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

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

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

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

Einstieg in die Informatik mit Java

9. Ausnahmebehandlung

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

Exceptions. Prof. Dr.-Ing. Thomas Schwotzer 21. November 2017

Leider gibt es in einigen Fällen keine wirklich einheitlichen Fachbegriffe im Deutschen, obwohl einige als "der Standard" bezeichnet werden.

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

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

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

II.4.4 Exceptions - 1 -

Selectionsort Beispiel

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

Vorlesung Informatik II

Einführung in die Programmierung mit Java

Mögliche Implementierung von intern():

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

Vorlesung 10. Sitzung Grundlegende Programmiertechniken

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

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

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

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90

15 Fehlerobjekte: Werfen, Fangen, Behandeln

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

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

HSR Rapperswil 2001 Markus Rigling. Programmieren: Exceptions Auflage

16. Ausnahmebehandlung Programmieren / Algorithmen und Datenstrukturen 2

Exceptions und Vererbung

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

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

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG

15. Ausnahmebehandlung Programmieren / Algorithmen und Datenstrukturen 2

Bei dem letzten Versuch wird deutlich, dass es auch für Objekte eine Ausgabe gibt. Genauer besteht die Standardausgabe aus dem Klassennamen, dem at-

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

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack).

Einführung in die Programmierung

1.7 Fehler- und Ausnahmebehandlung

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Praxis der Programmierung

15 Fehlerobjekte: Werfen, Fangen, Behandeln

Einführung in die Informatik

Genauer müssen in den eckigen Klammern eigentlich Boolesche Bedingungen stehen. Man kann hinter jeden dargestellten Bedingungstext ein "ausgewählt"

15 Fehlerobjekte: Werfen, Fangen, Behandeln

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

15 Fehlerobjekte: Werfen, Fangen, Behandeln

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

Exceptions. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E. Bazzi

Durch die Möglichkeit, Ein- und Ausgaben auf der Konsole durchzuführen, kann man auch systematisch das Verhalten von Klassen analysieren.

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

Java : Fehlerbehandlung.

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Kapitel 11: Ausnahmebehandlung

Ausnahmebehandlung PK11W-16,

Einführung in die Programmierung für NF

Komponenten-basierte Entwicklung Teil 4: Exceptions

Javakurs zu Informatik I. Henning Heitkötter

15 Fehler-Objekte: Werfen, Fangen, Behandeln

Kapitel 12: Ausnahmen und Ausnahmebehandlung

Java Fehlerbehandlung

Ausdrucksbäume in verschiedenen Darstellungen

V by WBR1/BFH-TI 2011 by MOU2/BFH-TI

Der Begriff des Frameworks soll hier nicht weiter erläutert werden; er spielt aber in der späteren Programmierausbildung eine wichtige Rolle.

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze

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

Liste Programmieren Java Überblick

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

Algorithmen und Programmierung III WS 05/06

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Grundproblematik bei Fehlersituationen

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

1.) Behandlung von Laufzeitfehlern in Visual Basic

Lösungshinweise/-vorschläge zum Übungsblatt 11: Software-Entwicklung 1 (WS 2017/18)

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

Softwareentwicklung II (IB) Exceptions. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Kapitel 9: Klassen und höhere Datentypen. Selektoren

Exceptions. Softwareentwicklung II (IB) Prof. Dr. Oliver Braun Letzte Änderung: :23. Exceptions 1/37

Das Einsteigerseminar Objektorientierte Programmierung in Java

Transkript:

432 433

434 435

Auf dieser und den beiden folgenden Folien wurde jeweils ein neues Objekt der Klasse FigurMalerei erstellt und die angegebene Methode ausgeführt. 436 437

438 439

440 441

442 443

Die verkürzte Überschrift soll andeuten, dass hier die Probleme mit möglichen null-werten nicht betrachtet werden. Wichtig ist allerdings, dass es eine equalsund ein hashcode-methode gibt. Die verkürzte Überschrift soll andeuten, dass hier die Probleme mit möglichen null-werten nicht betrachtet werden. Wichtig ist allerdings, dass es eine equalsund ein hashcode-methode gibt. 444 445

446 447

Mit der Methode values() erhält man eine Sammlung von allen Value-Objekten, die sich aktuell in dem HashMap-Objekt befinden. Die Berechnung dieses Ergebnisses ist sehr aufwändig. Wenn diese Methode häufiger im Programm steht, viel wichtiger aber häufig im laufenden Programm genutzt wird, sollte man über die Nutzung einer anderen Sammlung nachdenken. Die Methode remove liefert als Ergebnis das gelöschte Value-Objekt. Falls kein Objekt an der angegebenen Key-Position gefunden wurde, ist das Ergebnis null. Man beachte, dass bei dieser Methode vorher eine Schleife notwendig war, auf die jetzt verzichtet werden kann. 448 449

450 451

452 453

Die Verwaltung wird um eine Objektvariable semester erweitert in der das aktuell betrachtete Semester drinsteht. Der genau Prozess des Ladens und Speichern wird später genauer analysiert. Hier soll zunächst das Prinzip mit einer Realisierungsmöglichkeit erklärt werden. Parallel dazu wird der Umgang mit Exceptions beschrieben. Hinweis: Es werden hier 8-Bit-Versionen der Streams betrachtet (gibt ähnliche Klassen für Uni-Code, 16 Bit). 454 455

Das Schließen von Dateien ist ein sehr zentraler Schritt, da ein Vergessen dieser Aktion oftmals nicht direkt zu einem Fehler führt. Man spricht von einem schleichenden Fehler, der oft erst später gespürt wird, wenn eine Applikation deutlich langsamer läuft oder sich das Betriebssystem plötzlich weigert, eine bestimmte Aktionen, die sonst immer möglich sind, auszuführen. Der Dateiname ist beliebig, die Endung aber sinnvoll, da eine syntaktische korrekte XML-Datei erzeugt wird. Die genaue Kenntnis von XML ist hier nicht notwendig, aber leicht erlernbar und sollte irgendwann im Studium genauer verstanden werden. 456 457

458 459

Die Idee der mehrfach geschachtelten Konstruktoren wird später erklärt, wichtig ist hier nur, dass ein Stream zu einer Datei geöffnet wird und so Informationen in die Datei geschrieben werden. Anmerkung: Das Exception Handling wurde in Java 7 etwas vereinfacht. Da es hier um die Grundlagen geht, die in der präsentierten Form in anderen Programmiersprachen sehr ähnlich sind, wird die klassische Variante vorgestellt. Diese Variante ist natürlich auch in Java 7 nutzbar. 460 461

462 463

Die Zeilen "normalesprogramm" stehen für einfache Programmzeilen, die keine try-catch-blöcke enthalten. Es sind beliebig viele catch-blöcke möglich. Der finally-block kann weggelassen werden, wenn er existiert, wird er immer garantiert ausgeführt. Der angedeutete Fall2 wird später behandelt, falls es keinen finally-block gibt, wird die Exception direkt an die aufrufende Methode weitergegeben. Durch die verwendete Klasse XMLEncoder werden alle mit writeobject(.) geschriebenen Objekte im XML-Format abgespeichert. Dies ist möglich, da die Bean-Eigenschaften genutzt werden, bei denen durch get- und set- ein einfaches Lesen und Schreiben möglich ist. XML ist eine sogenannte Auszeichnungssprache mit einfachen syntaktischen Regeln. Basierend auf diesen Regeln kann man eine Teilmenge von XML- Dokumenten definieren, die zur Verwaltung bestimmter Daten genutzt werden können. XML ist dabei recht einfach maschinenlesbar, jede ordentliche Programmiersprache bietet Bibliotheken zur XML-Bearbeitung, und kann auch von Menschen gelesen und notfalls geschrieben werden, was häufig in Konfigurationsdateien genutzt wird. Das Thema XML wird in späteren Vorlesungen des Studiums vertieft. 464 465

Der Hintergrund des Problems ist es, dass BlueJ selbst als Java-Programm die Ausführung der Java-Programme steuert. Bei dieser Steuerung ist leider nicht sichergestellt, dass alle benutzten Klassen auch zur Nutzung mit XMLDecoder zur Verfügung stehen. Dies ist eine der wenigen Programmzeilen, die man nur hinschreiben, aber noch nicht verstehen muss. Wird das Java-Programm außerhalb von BlueJ genutzt, ist die Ergänzung überflüssig, schadet aber bei den vorgestellten Programmen auch nicht. 466 467

Man kann auch vollständig auf die Klasse File hier verzichten. Sie ermöglicht aber eine genauere Analyse des Fehlerfalls und kann deshalb hilfreich sein. 468 469

Die Warnung bezieht sich nur auf das Casten der Liste, da der genaue Typ der Liste, d. h. welche Objekte in ihr gespeichert sind, nicht explizit mit abgespeichert wird. (Längere Geschichte, da erst mit Java 5 die Möglichkeit entstand, den Typen der Listenelemente anzugeben) 470 471

472 473

474 475

Der Testfall zeigt, dass die Ausgangssituation mit zwei IMI- und MID-Studenten abgespeichert wird, danach zwei Studiengänge gelöscht und dann die gespeicherten Daten wieder eingelesen werden. Da keine Exception erwartet wird, steht im catch-block ein "asserttrue(false)", was dazu führt, dass, wenn diese Anweisung erreicht wird, immer ein Fehler erzeugt wird. Generell gilt bei JUnit, dass nicht behandelte Exceptions wie Fehler behandelt werden und so zu einem erfolglosen Testfall führen. 476 477

Wieder wurde die Programmstelle, von der man erwartet, dass sie nicht erreicht wird, mit asserttrue(false) gekennzeichnet. Alternativ könnte hier auch fail() stehen, was auch nur bedeutet, dass die eigentlich nicht zu erreichende Programmzeile doch erreicht wurde. Die Zeilen "normalesprogramm" stehen für einfache Programmzeilen, die keine try-catch-blöcke enthalten. Tritt in machwas eine Exception vom Typ ExTyp2 auf, wird diese an die aufrufende Methode weitergeleitet. Da die Exception hier nicht gefangen wird, muss sie in der throws-deklaration von rufauf stehen. 478 479

480 481

Natürlich kann man auch andere Konstruktoren nutzen, Objektvariablen definieren und Methoden ergänzen. Dies kann z. B. Sinn machen, wenn man die Fehlerbehandlung weiter konkretisieren möchte. 482 483

484 485

Das Bild zeigt nur einen recht kleinen Ausschnitt aller bereits existierenden Klassen zur Fehlerbehandlung. Es fällt auf, dass es die noch allgemeinere Klasse Throwable als Grundlage gibt, wobei es üblich ist, eigene Exceptions von der Klasse Exception erben zu lassen und gegebenenfalls einen eigenen Exception-Vererbungsbaum aufzubauen. Alle von Error erbenden Klassen stehen für gravierende Fehler, die man in der eigenen Software nicht behandeln sollte, und teilweise gar nicht behandeln kann. Da jede Programmausführung Speicher benötigt, ist es unklar, ob auf "OutOfMemory" reagiert werden kann. Auch die von RuntimeException erbenden Klassen stehen meist für größere Fehler, können aber gegebenenfalls wie eine IllegalArgumentException abgefangen werden. Für die bisher genannten Klassen gilt, dass sie nicht in einer throws-liste stehen müssen, da in Java keine Behandlung des Fehlers erwartet wird. Die Klassen können aber trotzdem in throws-listen stehen und mit catch- Blöcken bearbeitet werden. Die "normalen" Exceptions müssen immer mit try-catch-blöcken behandelt werden. 486 487

488 489