05_Exception
Code-Dateien
| Dateiname | Aktion |
|---|---|
| CODECode_Fahrzeug.zip | Download |
| CODECode_Mitarbeiter.zip | Download |
Videos
| Dateiname | Aktion |
|---|---|
| VIDEOVideo_Fahrzeug_D | Abspielen |
| VIDEOVideo_Mitarbeiter_D | Abspielen |
Lernmaterialien
Ausgangslage
@Override
public void setPs(int ps) {
if ((ps >= 70) && (ps <= 200)) {
this.ps = ps;
}
else {
System.out.println("Fehler: ungültige PS Anzahl! Bei einem Auto muss diese zw. 70 und 200 liegen!");
this.ps = 100;
}
}Es wurde im Fehlerfall:
Fehlermeldung ausgegeben
Zuweisung des Defaultwertes
Der Konstruktor lieferte eine gültige Objektreferenz - obwohl der Parameter falsch war.
ToDo
Exception Klasse
public class FahrzeugException extends Exception {
public FahrzeugException(String meldung) {
super(meldung);
}
}Wir bekommen die Funktionalität der Exception Klasse geschenkt.
setMethode
@Override
public void setPs(int ps) throws FahrzeugException {
if ((ps >= 70) && (ps <= 200)) {
this.ps = ps;
}
else {
throw new FahrzeugException("Fehler: ungültige PS Anzahl! Bei einem Auto muss diese zw. 70 und 200 liegen!");
}
}Nun liefert die setMethode eine Exception.
Änderungen:
throw new Fahrzeugexception mit der Fehlermeldung
Methodenkopf liefer auch eine Exception
Vaterklasse
public abstract void setPs(int ps) throws FahrzeugException;Auch hier gehört der Methodenkopf angepasst.
Die beiden Methodenköpfe müssen IDENT sein.
Aufrufe
Die ganze Aufrufhierarchie liefert eine Exception.
Erst in der Test-Klasse darf die Exception abgefangen werden.
Test
@Test
public void testAutoPSWenig() {
Auto a = null;
try {
a = new Auto("Opel", 69, true, false);
System.out.println(a);
assertEquals(1,0);
}
catch (FahrzeugException e) {
System.out.println(e.getMessage());
assertEquals(1,1);
}
}In der Testklasse wird die Exception abgefangen und die Fehlermeldung ausgegeben.
Struktur
Ausgangslage
public void hinzufugen(int pos, Fahrzeug neu) {
if (neu != null) {
if ((pos >= 0) && (pos <= fahrzeuge.size())) {
if (fahrzeuge.contains(neu) == false) {
fahrzeuge.add(pos, neu);
}
else {
System.out.println("Fehler: Fahrzeug schon vorhanden!");
}
}
else {
System.out.println("Fehler: ungültige Position!");
}
}
else {
System.out.println("Fehler: kein Fahrzeug!");
}
}Eine Folge von if/else Statements.
Prüfung
public void hinzufugen(int pos, Fahrzeug neu) throws FahrzeugException {
if (neu == null)
throw new FahrzeugException("Fehler: kein Fahrzeug!");
if ((pos < 0) || (pos > fahrzeuge.size()))
throw new FahrzeugException("Fehler: ungültige Position!");
if (fahrzeuge.contains(neu))
throw new FahrzeugException("Fehler: Fahrzeug schon vorhanden!");
fahrzeuge.add(pos, neu);
}Zuerst werden die Fehlerfälle abgearbeitet.
Dann bleibt nur mehr der auszuführende Code übrig.