Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe eine wohl sicherlich abwegige Frage und zwar würde ich gerne unter einer bestimmten Bedingung einen Fehler im try produzieren damit ich auf jedenfall in den catch lande.
Java:
try {
String name = ReadLine();
// Hier sind noch andere Methoden drinnen, die Fehler produzieren können...
if(line.equals("bla")) {
// mach das
} else if(line.equals("quark") {
// mach jenes
} else {
// Hier soll ein fehler vorgetäucht werden
// da dieser in der Catch-Methode behandlet werden soll
}
} catch (Exception e) {
//Error handling
....
System.out.println("....")
}
Wieso willt du daraus ein Error machen? Anstatt das direkt in dem else{ }- Block zu schreiben? Den Unterschied sieht man nur als Programmierer, aber das Programm verhält sich schließlich gleich, wobei eine Exception absichtlich zu werfen mir doch sehr unschön scheint
Wenn du das machst, weil das öfters aufgerufen wird, dann mach halt ne extra Methode (aber ich kann ja deinen Willen leider nicht lenken^^)
Exceptions werden immer absichtlich geworfen Aber warum man eine Exception werfen sollte, welche man selber wieder in der gleichen Methode abfängt... das ist wirklich etwas sinnfrei
Exceptions werden immer absichtlich geworfen Aber warum man eine Exception werfen sollte, welche man selber wieder in der gleichen Methode abfängt... das ist wirklich etwas sinnfrei
Nicht unbedingt. Unter folgenden Umständen macht es Sinn:
- Grössere Codeblock, try/catch-Block darum
- Der Code nach einer geworfenen Exception soll nicht ausgeführt werden und im Catch-Block soll immer dasselbe ausgeführt werden (z.B. Fehlermeldung auf GUI anzeigen)
Nicht unbedingt. Unter folgenden Umständen macht es Sinn:
- Grössere Codeblock, try/catch-Block darum
- Der Code nach einer geworfenen Exception soll nicht ausgeführt werden und im Catch-Block soll immer dasselbe ausgeführt werden (z.B. Fehlermeldung auf GUI anzeigen)
Wenn jz in deinem Code dummerweise eine Exception fliegt, wo du keine erwartet hättest, dann landest du auch im Catch-Block und dein Codefluss stimmt nicht. Wie bereits gesagt: entweder extra Methode oder den Code in den else-Teil schreiben.
Exceptions schmeist du dann, wenn du an der aktuellen Stelle die Problematik nicht behandeln kannst(willst). Der Programmierer, der später deine Methode anwendet, muss sich dann eben darum kümmern, diese richtig zu behandeln.
Wenn ich irgendwo einen Fehler werfe, dann passiert gar nichts, nur die Fehlermeldung wird angezeigt
Java:
try{
if({Ausdruck der false ergibt}){
throw new IllegalArgumentException("Fehler");
}
if({Ausdruck der false ergibt}){
throw new IllegalArgumentException("Fehler");
}
...
//query ausführen
} catch (IllegalArgumentException e) {
MessageUtil.addErrorString(req, e.getMessage());
}
In diesem Code wird sonst nirgends eine IllegalArgumentException() geworfen. Der Code ist komplexer als hier dargestellt, d.h. mehrere if/else verschachtelt.
Das ist von vorn herein schlecht. "Größere Codeblöcke" soll man vermeiden -- besonders, wenn man viele
verschachtelte Bedingungen hat. Spalte das in mehrere kleine Methoden auf. z.B. eine Check-Methode, die
die Bedingungen überprüft und ggf. eine Meldung ausgibt und eine Methode die ansonsten die Berechnung durchführt.
Dann brauchst du keine unübersichtliche Exception-Werferei für den Kontrollfluss.
Danke für die vielen Antworten, habe heute in der Uni darüber nachgedacht und eine wohl eindeutig bessere Methode über finally mit Bedingung gefunden. Danke dennoch für die angenehme Diskussion.