Lab-04 — Exceptions
in Arbeit ...
1. Vorbereitung
Kopiere das Projekt Lab-03 auf z.B. Lab-04_Exceptions und ersetze die Parameterprüfungen mit System.out.println(..) etc. durch Exceptions.
2. Exceptions erstellen
Erstelle eine checked Exception-Klasse BadParamException
mit den beiden Konstruktoren für Parameter String msg
sowie für Parameterliste String msg, Throwable cause
.
Erstelle weiters eine unchecked Exception-Klasse ParamWarnException
für Fälle, wo Parameter problematisch sind (z.B. Name < 3 Zeichen, etc.).
3. Einsatz der Exceptions
Prüfung auf null soll eine Checked Exception verurschachen, auch weitere, als kritisch anzusehende Fehler sollten Checked Exceptions auslösen.
Fehler, die die weitere Funktion nicht verhindern, sollen aus unchecked Exception umgesetzt werden.
4. Was ist zu prüfen:
-
Texte (Name, SozVersNr, …) auf null, mit
isBlank()
(inhaltslos, nur 'Whitespace': Leerzeichen, Tabs, Zeilenschaltungen), bei Name z.B. Mindestlänge 2, bei SozVersNr. exakt Länge 10, etc. -
Zahlen je nach Bedeutung z.B. >0 oder >= 0, realistische Obergrenzen
-
Datum (einstellDatum, ) in plausiblen Grenzen (GebJahr zw. 1910 und aktuellem Jahr (
LocalDate.now().getYear()
)
5. Behandlung der Exceptions
-
Unchecked Exceptions der Mitarbeiter werden in der Klasse
Firma
mittry/catch
abgefangen -
Unchecked Exceptions der Firma (z.B. Array schon voll) werden in der Test-Klasse mit
try/catch
abgefangen.
In beiden Fällen wird nur eine Warnmeldung ausgegeben. Diese enthält:
-
die Exception-Klasse (
e.getClass.getSimpleName()
) -
die Exception-Message (
e.getMessage()
)
Die checked Exception wird NICHT abgefangen und verursacht damit einen Programm-Abbruch und einen Stacktrace.
6. Zeit-Infos und Text-Erzeugung
Alle Strings sind mit format(..)
oder formatted(..)
zusammenzubauen.
Datums-Funktionalität is mit LocalDate
umzusetzen.
Eine Unterlagen-Seite zu beidem: Zeit Framework und Text-Formatierung