Exceptions werfen oder catchen??

Fleur de Soleil

Aktives Mitglied
Guten Morgen zusammen,

kurze Frage an euch, was ist schöneres, besseres oder auch mehr genutztes Java??

Fall1:

Java:
	public void meineExceptionMethode() throws Exception{
		mach was
		throws blabla
	}

Fall2:

Java:
	public void meineExceptionMethode() throws Exception{
		try{
			//mach was
		}catch (Exception e){
			//blabla
		}
	}

LG Fleur
 
Was wird mehr benutzt eine Tür öffnen oder eine Tür schließen?

Die zwei Fälle sind Gegenstücke, wo der Fehler passiert wird sie geworfen. Wo der Fehler behandelt wird (Loggen, User informieren, alles abstürzen lassen) da wird er gefangen...
 
deine bsp sind mehr als merkwürdig.

throws Exception in der Methoden signatur sollte schon gar nicht sein.

Und ob du wirfst oder fängst ist nicht unbedingt exklusiv. Du kannst eine Exception fangen und in dem Fall eine andere werfen.

Die wichtigste Frage ist... kann der Verwender etwas mit der Exception anfangen, kann er darauf reagieren. Wenn ja, dann wirf sie, wenn nicht dann hängst davon, ob das Programm dennoch gütig weiterlaufen kann oder es nicht geht. Im 2. Fall ist dann die RuntimeException angesagt, im ersten reicht meistens dann eine warnung zu loggen.
 
Zum Einen: Fall 2 liefert dir einen Compiler-Fehler, da du die Exception fängst und trotzdem ein throws angibst.

Zum anderen:

Man kann es nicht genau sagen. Beide Fälle tuen etwas unterschiedliches. Im ersten wirfst du direkt eine Exception in einem bestimmtem Fall. Im zweiten willst du sicher gehen, dass du eine evtl. auftretende Exception an Ort und Stelle bearbeiten kannst. Est also eher die Frage wo du die Exception behandeln willst.
 
Zum Einen: Fall 2 liefert dir einen Compiler-Fehler, da du die Exception fängst und trotzdem ein throws angibst.
öh.. nein
Java:
    public static void main(String[] args) throws Exception {
        foo();
    }

    private static void foo() throws Exception {
        try {
            throw new ClassNotFoundException("weird, but works");
        }
        catch (Exception e) {
            throw new IOException(e);
        }
    }
 
Achso okay, ich dachte beide Methoden machen im Prinzip das gleiche. Das mit throws auch im zweiten Fall kommt durch das schnelle schreiben der Beispiele. Hab einfach nur den Inhalt der Methode geändert und am Methodenkopf leider vergessen das throws wegzumachen.

Wenn ich also dem Benutzer in der View sagen will, dass zum Beispiel seine Eingabe falsch war, catch ich die Exception??
 
Gut dann habe ich das jetzt auch richtig verstanden. Ihr glaubt gar nicht wie dankbar ich für eure mittlerweile tägliche Hilfe bin. Hab seid meiner Anmeldung (erst vor ein paar Tagen) schon ne Menge dazugelernt. Danke euch allen

LG Fleur
 

Zurück
Oben