• Keine Ergebnisse gefunden

„Einführung in die Informatik: Programmierung und Softwareentwicklung“

N/A
N/A
Protected

Academic year: 2021

Aktie "„Einführung in die Informatik: Programmierung und Softwareentwicklung“ "

Copied!
23
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

WS14/15

Zentralübung zur Vorlesung

„Einführung in die Informatik: Programmierung und Softwareentwicklung“

http://www.pst.ifi.lmu.de/Lehre/wise-14-15/infoeinf

Annabelle Klarl

Einführung in die Informatik

Programmierung und Softwareentwicklung

Ausnahmen

(2)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Action required now

1.

Smartphone: installiere die App "socrative student" oder Laptop: öffne im Browser b.socrative.com/login/student

2.

Betrete den Raum InfoEinf.

3.

Beantworte die erste Frage sofort!

(3)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Fehlerarten

Bei der Programmierung können viele Arten von Fehlern auftreten:

Syntaktische Fehler

z.B. String name = "annabelle;

-> vom Compiler erkannt

Logische Fehler

z.B. System.out.println("Hllo Wlt!");

-> nicht automatisch erkennbar

Fehler bei der Umsetzung

Ungenügender Umgang mit

außergewöhnlichen Situationen

3 Ausnahmen

meist angezeigt durch Exceptions oder Errors

(Throwables)

(4)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Fehler und Ausnahmen in Java

Alle Unterklassen der Klasse java.lang.Throwable.

Checked Exceptions

müssen abgefangen werden

Unchecked Exceptions Throwable

Error Exception

RuntimeException

IOException

IndexOutOfBoundsException NullPointerException OutOfMemoryError

Schwerwiegende Fehler

müssen nicht abgefangen werden

(5)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Aufgabe

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, Unchecked Exception dieses Objekt gehört.

2.

Beantworten Sie außerdem jeweils die Fragen:

a.

Darf im Java-Programm explizit angegeben werden, wie auf diese Fehlersituation reagiert werden soll?

(Verwendung eines

catch

-Blocks oder einer

throws

-Deklaration)

b.

Muss es explizit angegeben werden?

5 Ausnahmen

(6)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Aufgabe a.

Ein Array array wurde ordnungsgemäß erzeugt. Nach der Erzeugung wird die folgenden Deklaration ausgeführt:

int a = array[-1];

Das Programm kompiliert korrekt, bei der Ausführung tritt

allerdings die Exception ArrayIndexOutOfBoundsException auf.

Array: [ w

1

, w

2

, w

3

, …, w

n

]

Position: -1 0 1 2 … n-1

(7)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Lösung a.

1.

Klasse: ArrayIndexOutOfBoundsException

Kategorie: RuntimeException bzw. unchecked Exception

a)

Das Java-Programm darf diese Ausnahme nicht abfangen.

b)

Das Java-Programm darf diese Ausnahme abfangen, muss sie aber nicht abfangen.

c)

Das Java-Programm darf diese Ausnahme abfangen und muss sie auch abfangen.

Bemerkung:

Diese Kategorie von Fehlern kann bei korrekter Implementierung vermieden werden. Deshalb wird diese Kategorie normalerweise nicht behandelt.

7 Ausnahmen

Raum: InfoEinf

2. Wie darf/muss das Java-Programm reagieren?

(8)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Aufgabe b.

Eine Variable v ist vom Typ MeineKlasse , der eine Unterklasse von Object ist. Also ist der Ausdruck v.toString() erlaubt, aber zum Ausführungszeitpunkt hat die Variable v den Wert null.

Object

+ String toString()

MeineKlasse

Beispielcode:

MeineKlasse v = null;

v.toString();

(9)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Lösung b.

a) UnsupportedOperationException

b) IllegalArgumentException

c) NullPointerException

d) IllegalStateException

2.

Verwendung in catch- oder throws-Konstrukten:

a.

Das Java-Programm darf diese Ausnahme abfangen.

b.

Das Java-Programm muss diese Ausnahme nicht abfangen.

Bemerkung:

Diese Kategorie von Fehlern kann bei korrekter Implementierung vermieden werden. Deshalb wird diese Kategorie normalerweise nicht behandelt.

10 Ausnahmen

Raum: InfoEinf

1. Wie heißt die geworfene ungeprüfte Ausnahme?

(10)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Aufgabe c.

Ein neues Objekt soll erzeugt werden, aber es ist kein Speicherplatz

mehr verfügbar, in dem es gespeichert werden kann.

(11)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Lösung c.

1.

Klasse: OutOfMemoryError Kategorie: Error

a)

Das Java-Programm darf diese Ausnahme nicht abfangen.

b)

Das Java-Programm darf diese Ausnahme abfangen, muss sie aber nicht abfangen.

c)

Das Java-Programm darf diese Ausnahme abfangen und muss sie auch abfangen.

Bemerkung:

Wenn diese Kategorie von Fehler einmal auftritt, kann das Programm kaum noch sinnvoll reagieren. Deshalb wird diese Kategorie normalerweise nicht behandelt.

13 Ausnahmen

Raum: InfoEinf

2. Wie darf/muss das Java-Programm reagieren?

(12)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Aufgabe d.

Eine Datei wurde zum Lesen geöffnet und daraufhin überprüft, dass das Dateiende noch nicht erreicht ist.

Unmittelbar vor der ersten 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.

(13)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Lösung d.

1.

Klasse: EOFException

Kategorie: checked Exception

a)

Das Java-Programm darf diese Ausnahme nicht abfangen.

b)

Das Java-Programm darf diese Ausnahme abfangen, muss sie aber nicht abfangen.

c)

Das Java-Programm darf diese Ausnahme abfangen und muss sie auch abfangen.

16 Ausnahmen

Raum: InfoEinf

2. Wie darf/muss das Java-Programm reagieren?

(14)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Lösung d. (Fortsetzung)

1.

Klasse: EOFException

Kategorie: checked Exception

2.

Verwendung in catch- oder throws-Konstrukten:

a.

Das Java-Programm darf diese Ausnahme abfangen.

b.

Das Java-Programm muss diese Ausnahme abfangen!!!

Bemerkung:

Wenn diese Kategorie von Fehlern auftritt, kann das Programm 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, diese Kategorie von Fehlern selbst zu behandeln (

catch

-Block)

oder weiterzugeben (

throws-Deklaration

).

(15)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Eingabe- und Ausgabemöglichkeiten

1.

GUIs mit AWT und Swing:

Eingabe über JOptionPane -Dialog Ausgabe über JTextArea

2.

Standardeingabe und -ausgabe über die Konsole:

Eingabe über einen InputStream

Ausgabe über einen PrintStream

18 Ausnahmen

System.out.println("Hallo Welt");

(16)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Standardeingabe und -ausgabe in Java

In jedem Java-Programm erzeugt der Compiler automatisch eine Instanz der Klasse System mit Attributen in und out .

1.

Standardeingabe von der Konsole:

System.in (Eingabestrom vom Typ: InputStream )

2.

Standardausgabe auf der Konsole:

System.out (Ausgabestrom vom Typ: PrintStream )

System.out.println("Hallo Welt");

???

(17)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Streams lesen (und schreiben)

Zwei Arten von Stream-Klassen:

1.

Byteorientierte Ströme (= Byte-Streams)

Lesen/Schreiben von jeweils einem Byte

Basisklassen:

java.io.InputStream/java.io.OutputStream

Beispiele:

FileInputStream

/

FileOutputStream

, …

2.

Zeichenorientierte Ströme (= Character-Streams)

Lesen/Schreiben von zwei Bytes oder einem char

Basisklassen:

java.io.Reader

/

java.io.Writer

Beispiele:

InputStreamReader/OutputStreamWriter, BufferedReader/BufferedWriter

,

FileReader/FileWriter

, …

20 Ausnahmen

Effizientes Lesen

mit

readLine()

(18)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Standardeingabe und -ausgabe in Java: Beispiel

import java.io.*;

public class Eingabe {

public static void main(String[] args) throws IOException{

System.out.println("Wie lautet dein Name?");

BufferedReader konsole =

new BufferedReader(new InputStreamReader(System.in));

String name = konsole.readLine();

System.out.println("Hallo " + name + ". ");

} }

Eingabe über die Konsole

Ausgabe über die Konsole

Fehler weitergeben

(19)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Standardeingabe und -ausgabe in Java: Beispiel verbessert

import java.io.*;

public class Eingabe_verbessert {

public static void main(String[] args) {

System.out.println("Wie lautet dein Name?");

try {

BufferedReader konsole =

new BufferedReader(new InputStreamReader(System.in));

String name = konsole.readLine();

System.out.println("Hallo " + name + ".");

} catch (IOException e) {

System.out.println("Fehler:" + e.getMessage());

System.exit(1); // abnormal termination

} }}

22 Ausnahmen

(20)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Standardeingabe und -ausgabe in Java: Beispiel verbessert

import java.io.*;

public class Eingabe_verbessert2 {

public static void main(String[] args) {

System.out.println("Wie lautet dein Name?");

String name = stringEinlesen();

System.out.println("Hallo " + name + ".");

}

public static String stringEinlesen() { BufferedReader konsole =

new BufferedReader(new InputStreamReader(System.in));

while (true) {

try { return konsole.readLine(); }

catch (IOException e) { System.out.println("Nochmal!"); } }

(21)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Ausblick: Dateien lesen und schreiben

import java.io.*;

public class FileTest {

public static void aneinanderhaengen(String[] dateinamen) { BufferedOutputStream out = new BufferedOutputStream(System.out);

for (int n = 0; n < dateinamen.length; n++) { BufferedInputStream file = null;

try {

file =

new BufferedInputStream(new FileInputStream(dateinamen[n]));

int data;

while ((data = file.read()) != -1) {// EOF Test out.write(data);

}

out.flush(); // Leeren des Puffers }...

24 Ausnahmen

(22)

Einführung in die Informatik

Programmierung und Softwareentwicklung

Ausblick: Dateien lesen und schreiben

} ... catch (FileNotFoundException e) {

System.out.println("Die Datei " + dateinamen[n]

+ " wurde nicht gefunden.");

} catch (IOException e) {

System.out.println("Fehler beim Lesen/Schreiben.");

} finally { try {

file.close();

} catch (IOException e) {

System.out.println("Fehler beim Schließen.");

} } }

}

(23)

Annabelle Klarl:

Einführung in die Informatik

Programmierung und Softwareentwicklung

Ausblick: Dateien lesen und schreiben

...

public static void main(String[] args) {

String[] dateien = { "test1.txt", "test2.txt" };

aneinanderhaengen(dateien);

} }

26 Ausnahmen

Referenzen

ÄHNLICHE DOKUMENTE

In Python sind Attribute im wesentlichen öffentlich, aber sie können durch Getter und Setter als Properties geschützt werden.... Aggregie- rung Properties Operator- Überladung

Landesamt für Umweltschutz Sachsen-Anhalt –Seite 2 (Stand: 30.01.2020). Kategorie Metadaten zu

Benötigt werden die Arbeit (Diplomarbeit, Masterarbeit oder Dissertation) in ausgedruckter, gehefteter Form (CDs können leider nicht anerkannt werden), Zeugnis/Beurteilung der

Benötigt werden die Arbeit (Diplomarbeit, Masterarbeit oder Dissertation) in ausgedruckter, gehefteter Form (CDs können leider nicht anerkannt werden), Zeugnis/Beurteilung der

9.1 Gebäude Kategorie 1 und 2 Ensemblebereiche Kategorie 1 und 2 56 9.1.1 Unterschutzstellung nach Denkmalschutzgesetz 57 9.1.2 Stadtbild-Satzung nach § 172 Abs.. 1 BauGB 59

Motivation Program- miersprache Beispiele Semantik Interpreter- Design Ausblick Zusammen-

14 Aufbau der Materie, Modelle S1,

245 Anleitung zum Lauftraining - 9 Schritte lauftipps.ch/LT?. 246 Trainingsintensitäten und