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 mit try/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