Semester_Vaadin |
---|
01_StartProject |
02_Component |
03_Layout |
04_Basiklasse |
05_Serviceklasse |
06_GridSimple |
07_Event |
08_Exception |
09_Grid_Manuell |
10_Delete |
11_Validation |
12_Insert |
@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
Auch der Konstruktor lieferte eine gültige Objektreferenz.
public class FahrzeugException extends Exception {
public FahrzeugException(String meldung) {
super(meldung);
}
}
Wir bekommen die Funktionalität der Exception Klasse geschenkt.
@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
public abstract void setPs(int ps) throws FahrzeugException;
Auch hier gehört der Methodenkopf angepasst.
Die beiden Methodenköpfe müssen IDENT sein.
Die ganze Aufrufhierarchie liefert eine Exception.
Erst in der Test-Klasse darf die Exception abgefangen werden.
@Test
public void testAutoPSWenig() {
= null;
Auto a try {
= new Auto("Opel", 69, true, false);
a 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.
public void hinzufugen(int pos, Fahrzeug neu) {
if (neu != null) {
if ((pos >= 0) && (pos <= fahrzeuge.size())) {
if (fahrzeuge.contains(neu) == false) {
.add(pos, neu);
fahrzeuge}
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.
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!");
.add(pos, neu);
fahrzeuge}
Zuerst werden die Fehlerfälle abgearbeitet.
Dann bleibt nur mehr der auszuführende Code übrig.