→ Fehlerklassen dienen dazu Fehler, die zur Laufzeit eines Programms auftreten können, zu behandeln und Lösungen anzubieten.
Aufgabe:
void vorsichtigesNimm() throws KeinKornDaFehler
{
if(this.kornDa())
{
this.nimm();
}
else
{
. . .
}
}
class DivisionDurchNullFehler extends Exception
{
}
class RechenzeichenFehltFehler extends Exception
{
}
void bearbeiteRechenaufgabe()
[
try
{
String aufgabe = this.liesZeichenkette("Bitte eine Rechenaufgabe eingeben!\nRechenzeichen sind: + - / *");
String rechenZeichen = this.ermittleRechenzeichen(aufgabe);
int zahl1 = this.ermittleErsteZahl(aufgabe, rechenZeichen);
int zahl2 = this.ermittleZweiteZahl(aufgabe, rechenZeichen);
int ergebnis = this.berechne(zahl1, zahl2, rechenZeichen);
}
Wenn Fehler auftreten, werden sie im catch-Block behandelt und eine entsprechende Fehlermeldung ausgegeben:
catch (RechenzeichenFehltFehler fehlerObjekt)
{
. . .
}
catch (DivisionDurchNullFehler fehlerObjekt)
{
. . .
}
// Standardfehler NumberFormatException ausgeloöt durch
// Integer.parseInt(zahlString)
catch (NumberFormatException fehlerObjekt)
{
. . .
}
}
String ermittleRechenzeichen(String aufgabe) throws RechenzeichenFehltFehler
{
int index = aufgabe.indexOf("+");
if (index >= 0)
{
return aufgabe.substring(index, index + 1);
}
. . .
}
throw new RechenzeichenFehltFehler();
int zahl1 = this.ermittleErsteZahl(aufgabe, rechenZeichen);
int ermittleErsteZahl(String aufgabe, String rechenZeichen)
{
int index = aufgabe.indexOf(rechenZeichen);
String zahlString = aufgabe.substring(0, index);
return Integer.parseInt(zahlString);
}
int ermittleZweiteZahl(String aufgabe, String rechenZeichen)
{
. . .
}
int berechne(int zahl1, int zahl2, String rechenZeichen) throws DivisionDurchNullFehler
{
int ergebnis = 0;
if (rechenZeichen.equals("+"))
{
. . .
}
else if (rechenZeichen.equals("-"))
{
. . .
}
. . .
}
void main()
{
RechnenHamster paul = new RechnenHamster(Hamster.getStandardHamster());
paul.erfrageRechenaufgaben();
}
String buchstabenEntfernen (String zahlEingabe)
{
. . .
for (int zaehler = 0; zaehler < alphabet.length; zaehler ++)
{
for (int zaehler1 = 0; zaehler1 < zahlEingabe.length(); zaehler1 ++)
{
index = zahlEingabe.indexOf(alphabet[zaehler]);
if(index >= 0)
{
zahlEingabe = . . .
}
}
}
return zahlEingabe;
}