Guten Abend,
So habe mich mal hier angemeldet und hoffe ihr könnt mir helfen.
zwar habe ich ein Problem mit Exceptions.
Bei dem Code unten soll, immer wenn err=1 ist, mittels Exception Handling abgefangen werden und mit dem finally-Block die Methode tuNix() aufgerufen werden.
Hier meine Lösung:
Hier der Code unbearbeitet
Meine Frage ist: Kann man das noch schöner oder anders lösen?
Wie werfe ich eine GotoFailException, die vom Compiler geprüft ist und in der main-Methode behandelt wird?
mit freundlichen Grüßen
Franm
So habe mich mal hier angemeldet und hoffe ihr könnt mir helfen.
zwar habe ich ein Problem mit Exceptions.
Bei dem Code unten soll, immer wenn err=1 ist, mittels Exception Handling abgefangen werden und mit dem finally-Block die Methode tuNix() aufgerufen werden.
Hier meine Lösung:
Java:
public class GotoFail {
private static int generateErrorCode(double probability) {
if (Math.random() < probability) {
return 1;
}
return 0;
}
private static void tuNix() {
}
private static int runGotoFail() {
int err = 0;
// do-while Schleife wird benoetigt,
// um goto mit break simulieren zu koennen // Bitte in der Loesung
// entfernen / ersetzen
do {
if ((err = generateErrorCode(0.1)) == 1)
break;
if ((err = generateErrorCode(0.1)) == 1)
break;
if ((err = generateErrorCode(0.1)) == 1)
break;
if ((err = generateErrorCode(0.1)) == 1)
break;
if ((err = generateErrorCode(0.1)) == 1)
break;
// break;
// Eclipse merkt, dass der folgende Code tot ist
// und
// compiliert
// das nicht
// if ((err = generateErrorCode(0.1)) == 1)
// break;
} while (false); // die Schleife wird nur einmal durchlaufen
// Aufraeumarbeiten, im Original hinter dem Label fail:
tuNix();
tuNix();
if (err == 1) {
try{
throw new RuntimeException("Error 1");}
catch(RuntimeException e){System.out.println(e.getMessage());}
finally{tuNix();}
}
return err;
}
public static void main(String[] args) {
System.out.println("Fehlercode: " + runGotoFail());
}
}
Hier der Code unbearbeitet
Java:
public class GotoFail {
private static int generateErrorCode(double probability) {
if (Math.random() < probability) {
return 1;
}
return 0;
}
private static void tuNix() {
}
private static int runGotoFail() {
int err = 0;
// do-while Schleife wird benoetigt,
// um goto mit break simulieren zu koennen // Bitte in der Loesung
// entfernen / ersetzen
do {
if ((err = generateErrorCode(0.1)) == 1)
break;
if ((err = generateErrorCode(0.1)) == 1)
break;
if ((err = generateErrorCode(0.1)) == 1)
break;
if ((err = generateErrorCode(0.1)) == 1)
break;
if ((err = generateErrorCode(0.1)) == 1)
break;
break;
// Eclipse merkt, dass der folgende Code tot ist
// und
// compiliert
// das nicht
if ((err = generateErrorCode(0.1)) == 1)
break;
} while (false); // die Schleife wird nur einmal durchlaufen
// Aufraeumarbeiten, im Original hinter dem Label fail:
tuNix();
tuNix();
return err;
}
public static void main(String[] args) {
System.out.println("Fehlercode: " + runGotoFail());
}
}
Meine Frage ist: Kann man das noch schöner oder anders lösen?
Wie werfe ich eine GotoFailException, die vom Compiler geprüft ist und in der main-Methode behandelt wird?
mit freundlichen Grüßen
Franm