Try - Catch

districon

districon

Aktives Mitglied
Hallo,

ich versuche gerade ein paar Fehlermeldungen abzufangen und dafür Zahlenwerte auszugeben.

Java:
public int rate(String z) {
        int wert = 0;
        try {
            zahlenRaten.rate(z);
        } catch (InterruptedException a){
            wert = 1;
        } catch (java.util.ServiceConfigurationError b) {
            wert = 3;
        } catch (IllegalStateException c) {
            wert = 2;
        } catch (NumberFormatException d) {
            wert = 4;
        } catch (ZahlUngueltig e) {
            wert = 5;
        } catch (ZahlGueltigAberZuKlein f) {
            wert = 6;
        } catch (ZahlGueltig g) {
            wert = 7;
        } catch (ZahlGueltigAberZuGross h) {
            wert = 8;
        }
        return wert;
    }

Nur zeigt es mir bei ZahlGueltigAberZuKlein, ZahlGueltig und ZahlGueltigAberZuGross an:
Exception '....' has already been caught.
ZahlGueltigAberZuKlein und ZahlGueltigAberZuGross sind Unterklassen von ZahlGueltig und ZahlGueltig ist eine Unterklasse von InterruptedException. Kann mir jemand sagen was ich da verändern muss damit dieser Fehler nicht mehr kommt?
 
kneitzel

kneitzel

Top Contributor
ZahlGueltigAberZuKlein und ZahlGueltigAberZuGross sind Unterklassen von ZahlGueltig
Das wird ja auch als "ist ein" Beziehung benannt. ZahlGueltigAberZuGross ist eine ZahlGueltig Exception. Damit wird das catch auf ZahlGueltig auch Exceptions abfangen die davon abgeleitet sind.

Die Regel hier ist also einfach: Immer erst die speziellen Exceptions abfangen und dann die generelleren. Oder direkt auf Deinen Code bezogen: Das Catch auf ZahlGueltig muss nach den davon abgeleiteten Exceptions geprüft werden.
 
districon

districon

Aktives Mitglied
Das wird ja auch als "ist ein" Beziehung benannt. ZahlGueltigAberZuGross ist eine ZahlGueltig Exception. Damit wird das catch auf ZahlGueltig auch Exceptions abfangen die davon abgeleitet sind.

Die Regel hier ist also einfach: Immer erst die speziellen Exceptions abfangen und dann die generelleren. Oder direkt auf Deinen Code bezogen: Das Catch auf ZahlGueltig muss nach den davon abgeleiteten Exceptions geprüft werden.
Ja macht Sinn. Jedoch hat sich noch nichts verändert. Es kommt immer noch die selbe Fehlermeldung
 
kneitzel

kneitzel

Top Contributor
Wie sieht jetzt der Code genau aus? Und was ist die genaue Fehlermeldung? Vermutlich trifft dieses Problem noch auf weitere deiner Exceptions zu.

An der Stelle aber auch noch der Hinweis: Das Programm sollte nicht durch Exceptions gesteuert werden.
 
districon

districon

Aktives Mitglied
Wie sieht jetzt der Code genau aus? Und was ist die genaue Fehlermeldung? Vermutlich trifft dieses Problem noch auf weitere deiner Exceptions zu.

An der Stelle aber auch noch der Hinweis: Das Programm sollte nicht durch Exceptions gesteuert werden.
Der Fehler kam durch die InterruptedException. Ich hab den Catch-block mal ausgeklammert und jetzt funktioniert es
 
districon

districon

Aktives Mitglied
Wie sieht jetzt der Code genau aus? Und was ist die genaue Fehlermeldung? Vermutlich trifft dieses Problem noch auf weitere deiner Exceptions zu.

An der Stelle aber auch noch der Hinweis: Das Programm sollte nicht durch Exceptions gesteuert werden.
Diesen Fall müsste ich auch noch irgendwie abcatchen: "wenn gar nichts bekannt ist, weil gar nichts passiert ist und gar nichts zurückkommt". Gibt es dafür eine Exception, bzw wie soll ich das in meinen Codeblock einbauen?
 
B

Barista

Top Contributor
Du könntest alle Exceptions fangen und im catch-Block anhand einer Map Exception-Klasse zu Nummer die Nummer setzen.
Natürlich musst Du auch auf die null reagieren, welche die Map bei unbekannter Exception liefert.

Letzten Endes erfolgt der Zusammenbau der Map auch im Code, das heisst, die Exceptions müssen bekannt sein.

Das ist nicht wirklich eine Lösung für:
wenn gar nichts bekannt ist

Dann eben die Map anhand einer Datei zusammenbauen.

Aber letztendlich ist dies nach meiner Meinung nicht lösbar.

Mich hat mal jemand wegen meinem Codegenerator für Fluent Interface angerufen.

Der wollte für Gremlin (Abfrage-Sprache für NoSql-Datenbanken) fluent interfaces machen, also letztendlich Typ-Prüfung und Code-Generierung aber für Dinge, die dynamisch erst zur Laufzeit bekannt sind.

Nun ja, Träume sind Schäume.
 
N

Neumi5694

Top Contributor
Was mich mal interessieren würde: warum?
Das bringt z.B. in DOS/Windows Batchaufrufen was, wenn du nach Ausführung des Programms den Errorlevel abfragen willst (System.exit(errorlevel)). 0 steht dabei normalerweise für "alles ok", alles andere muss definiert werden.

Ich würde das Ganze aber anders angehen, ein Throwable abfangen und dann (z.B. mit instanceof) prüfen, um welche Exception es sich handelt.
So wie es oben steht, kann die Methode immer noch Exceptions werfen, da kein Default berücksichtigt ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
Y Wie kann ich die Variable in der Try Catch returnen? Java Basics - Anfänger-Themen 3
B Try-Catch Block Java Basics - Anfänger-Themen 3
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
B try catch finally Java Basics - Anfänger-Themen 2
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
H throws und try catch Java Basics - Anfänger-Themen 8
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
I Try-Catch innerhalb eines Catchblocks Java Basics - Anfänger-Themen 1
J Endlosschleife bei Try-Catch? Java Basics - Anfänger-Themen 3
K JOptionPane/catch/try/finally/if Java Basics - Anfänger-Themen 9
V InputMismatchException (Try and catch) Java Basics - Anfänger-Themen 10
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
J Erste Schritte catch Exeption Parameter Java Basics - Anfänger-Themen 7
TheMenox Try and Catch Java Basics - Anfänger-Themen 12
J Try Catch Java Basics - Anfänger-Themen 6
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
J Code in Try-Catch Block wird nicht komplett ausgeführt Java Basics - Anfänger-Themen 5
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
A Nicht zu findender Fehler in einem try/catch Block Java Basics - Anfänger-Themen 6
F try/catch Ausführungen ? Java Basics - Anfänger-Themen 3
S try-catch - Variablen werden nicht an return übergeben Java Basics - Anfänger-Themen 3
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
I Exception try-catch Java Basics - Anfänger-Themen 1
E Buchstaben verhindern / Try & Catch Block Java Basics - Anfänger-Themen 3
F try/catch - (else) Java Basics - Anfänger-Themen 11
L Warum ist der catch-Block nicht erreichbar ? Java Basics - Anfänger-Themen 8
C Problem mit try-catch in Schleife Java Basics - Anfänger-Themen 15
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
J Methoden try / catch exception Java Basics - Anfänger-Themen 5
S 'continue' in catch- und if-blöcken Java Basics - Anfänger-Themen 2
B Erste Schritte try-catch-Klauseln, überprüfte Ausnahmen Java Basics - Anfänger-Themen 4
D Erste Schritte Warum try-catch für FileWriter Java Basics - Anfänger-Themen 5
S try-catch-finally-Problem Java Basics - Anfänger-Themen 10
xehpuk Compiler-Fehler final Variable in try-catch Wert zuweisen Java Basics - Anfänger-Themen 8
F Exceptionbehandlung --> catch/throws Java Basics - Anfänger-Themen 11
M Try und Catch Java Basics - Anfänger-Themen 5
B Fehler mit try + catch verhindern Java Basics - Anfänger-Themen 8
N Catch Block in Try erzwingen Java Basics - Anfänger-Themen 14
E Problem mit for schleife/ try-catch block Java Basics - Anfänger-Themen 7
B Variablen Variablen in try / catch "public" machen? Java Basics - Anfänger-Themen 3
C Wiederholung von try-catch Java Basics - Anfänger-Themen 3
N try and catch block in finally Java Basics - Anfänger-Themen 8
M exception catch falsch? Java Basics - Anfänger-Themen 11
S catch Exception erklären Java Basics - Anfänger-Themen 2
C Variable in try/catch Java Basics - Anfänger-Themen 10
B Try and Catch Java Basics - Anfänger-Themen 6
StrikeTom Ein paar(2) Fragen zu throws und try + catch Java Basics - Anfänger-Themen 6
J try und catch Java Basics - Anfänger-Themen 7
G Exceptionfreie Anweisungen in try-catch-Blöcke, Java Basics - Anfänger-Themen 6
B Exception vor catch Block definieren Java Basics - Anfänger-Themen 9
M Frage zu try ... catch Java Basics - Anfänger-Themen 9
S NumberFormatException , mit Try/Catch? Java Basics - Anfänger-Themen 7
B Try/catch Java Basics - Anfänger-Themen 11
M Try & Catch Java Basics - Anfänger-Themen 7
V Was ist ein Try-Catch Block Java Basics - Anfänger-Themen 4
M Nach catch mit der schleife weitermachen Java Basics - Anfänger-Themen 9
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S sauberer Stil von return Wert (try, catch, finally) Java Basics - Anfänger-Themen 9
S try-catch Java Basics - Anfänger-Themen 10
Tandibur Server führt "try-catch" nicht aus Java Basics - Anfänger-Themen 6
H Falsche Eingabe über try-catch abfangen Java Basics - Anfänger-Themen 2
I Frage zu Try - Catch - Finally Java Basics - Anfänger-Themen 10
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11
H try catch Java Basics - Anfänger-Themen 4
I double-Variable außerhalb des Try-Catch-Blocks nicht gültig Java Basics - Anfänger-Themen 2
D Catch wiederholt sich ständig Java Basics - Anfänger-Themen 2
T try-catch-finally Java Basics - Anfänger-Themen 8
G Anwendung von try-catch Java Basics - Anfänger-Themen 10
G try. catch Verwendung Java Basics - Anfänger-Themen 11
M Try-Catch-Problem Java Basics - Anfänger-Themen 4
G habe ein Catch problem Java Basics - Anfänger-Themen 7
C Nach Catch-Klausel Programm weiter laufen lassen Java Basics - Anfänger-Themen 5
B try & catch Problem mit Exception bzw String.split() Java Basics - Anfänger-Themen 5
C Frage zu try - catch (saubere Lösung?) Java Basics - Anfänger-Themen 3
G Bei catch beenden Java Basics - Anfänger-Themen 7
U catch mit finally Java Basics - Anfänger-Themen 5
C Exceptions, try, catch --> Frage Java Basics - Anfänger-Themen 7
J Try-Catch-Frage Java Basics - Anfänger-Themen 13
B catch exception funktioniert nicht! Java Basics - Anfänger-Themen 14
D Frage try and catch Java Basics - Anfänger-Themen 7
ven000m try catch - was muss bei catch rein Java Basics - Anfänger-Themen 28
G Datenbank - catch Java Basics - Anfänger-Themen 2
H Konstruktor in Methode fremder Klasse: try-catch-Problem Java Basics - Anfänger-Themen 4
M return und try-catch Java Basics - Anfänger-Themen 6
M Try . catch erzwungen? Java Basics - Anfänger-Themen 11
F eigene Exception aus try-catch werfen Java Basics - Anfänger-Themen 10
A Syntaxproblem mit try und catch Java Basics - Anfänger-Themen 3
Silver-Blue fragen zu Swing und catch Exceptions Java Basics - Anfänger-Themen 2
G return fehler bei try catch Java Basics - Anfänger-Themen 8
H try und catch Java Basics - Anfänger-Themen 6
A try catch UNREACHABLE CODE Java Basics - Anfänger-Themen 3
M Exception->mehrere Exceptions in einem Catch Block behand Java Basics - Anfänger-Themen 4
F catch zu früh Java Basics - Anfänger-Themen 6
A try und catch Java Basics - Anfänger-Themen 4
Dilandau paint(Graphics g) { unbekannt in try{} / catch{} }? Java Basics - Anfänger-Themen 5
E try-catch-throw Java Basics - Anfänger-Themen 14

Ähnliche Java Themen


Oben