Compiler-Fehler Exceptions lieber throwen oder direkt catchen?

membersound

Bekanntes Mitglied
Hallo,

wo fängt man idR Exceptions ab? Immer direkt am Ort des Fehlers, also try-catch? Oder ist es generell besser sie so weit wie möglich weiterzu thrown und dann alle Fehler irgendwo global in einer Klasse zu behandeln?
Mir geht es vor allem darum, dass der Code übersichtlich bleibt, was für throw sprechen würde.

In meinem Beispiel müsste ich die Exceptions also in der mainclass MyControll abfangen. Ich sammel dort quasi alle im Programm anfallenden Ex (auch aus anderen Klassen) und behandle sie dort in der main zusammen.
Aber ist das richtig? Reicht man Exceptions gerne hoch. Oder doch lieber direkt vor Ort?

Danke

Code:
public class MyControll {
	public static void main(String args[]) {
		MyModel model = new MyModel("testfile.txt");
	}
}

public class MyModel {
	public MyModel (String file) throws FileNotFoundException, IOException {
		readFile(file);
	}

	private void readFile(String file) throws FileNotFoundException, IOException {
		LineNumberReader buffer = new LineNumberReader(new FileReader(file));

		//usw
	}
}
 
T

Tomate_Salat

Gast
Wenn du sie an Ort und Stelle sinnvoll behandeln kannst, dann behandle sie. Ansonsten gibst du Sie weiter, bis du darauf sinnvoll reagieren kannst.

Anmerkung nutze besser Java-Tags anstatt Code-Tags.
 
S

SlaterB

Gast
ein eleganter Weg ist noch
Java:
} catch (..) {
  throw new RuntimeException(..);
}
das ist einerseits die Variante des Weiterreichens, aber ohne die oft als unnötig empfundene throws-Deklaration bei Checked-Exceptions,
vor allem auch bei allen Aufrufern usw.

dazu gehört dann natürlich, dass wenn überhaupt irgendwo weiter oben dann allgemein alle Exceptions abgefangen werden,
mit catch(FileNotFoundException) kann man nichts mehr erreichen,

wenn man als Problem ansieht, dass irgendwo dann auch NullPointerExceptions abgefangen werden (auch eine Exception bzw. RuntimeException), dann nicht RuntimeException sondern eine eigene Subklasse verwenden und nur diese abfangen,



auch wenn man sich sicher ist dass eine Exception nie auftritt und man am liebsten einen leeren catch-Block schreiben würde
kann man um ganz genau zu sein so etwas schreiben, passt genauso gut
 
Zuletzt bearbeitet von einem Moderator:

membersound

Bekanntes Mitglied
Ja, die Frage ist eben, wann ist eine Behandlung vor Ort sinnvoll?

So gesehen wäre doch eine FileNotFoundException oder IOException beim FileRead immer sinnvoll direkt zu behandeln, weil sie ja eben genau da auftritt.

In welchem Fall würde ich diese Ex denn weiterreichen? Bzw wann würde das eben mehr Sinn machen im Gegensatz zum direkten trycatch?
 

tfa

Top Contributor
So gesehen wäre doch eine FileNotFoundException oder IOException beim FileRead immer sinnvoll direkt zu behandeln, weil sie ja eben genau da auftritt.
Wenn besispielsweise der Anwender eben gerade einen unbekannten Dateinamen eingegeben hat, könntest du diese Exception sinnvoll behandeln, indem du ihn einfach nochmal bittest, was vernünftiges einzutippen.

Wenn aber z.B. ein Server-Prozess seine Config-Datei nicht findet, oder die Partition für die Logdateien voll ist und deswegen eine Exception fliegt, kann man die nicht sinnvoll behandeln. Da hilft es nur, den Fehler zu loggen und irgendwo eine rotes Licht angehen zu lassen, damit sich jemand darum kümmert.

Nach meiner Erfahrung lassen sich checked Exception nur in sehr wenigen Ausnahmen direkt sinnvoll behandeln.
 

membersound

Bekanntes Mitglied
OK ich merke schon, das muss man dann individuell entscheiden...

Nochmal eine Frage zu Exceptions in Java 7:
Java:
catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

Netbeans schlägt mir multicatch vor. Wenn ich das aber mache, bekomme ich einen Fehler:
Java:
catch (FileNotFoundException | IOException ex) { //Alternatives in a multi-catch statement cannot be related by subclassing
            ex.printStackTrace();
        }

Warum schlägt mir NB das denn dann vor?
Also möchte eigentlich nur wissen: mache ich was falsch beim multicatch, oder ist das ein Bug und NB sollte mir das eigentlich nicht vorschlagen?

Danke
 
T

Tomate_Salat

Gast
Weil es unnötig ist. FileNotFoundException erbt von IOException. Dieses als Multi-Catch anzugeben ist somit nicht notwendig.
 
S

SlaterB

Gast
die korrekte Antwort auf die Frage lautet ;) : ja, da macht wohl NB irgendwas falsch, hätte das nicht vorschlagen sollen

aber der Code vorher war auch unsinnig, insofern eine kleine Entlastung für NB
 
T

Tomate_Salat

Gast
Macht afaik Eclipse auch falsch. Ist noch nicht so ausgereift und man muss halt beim Multicatch ab und zu unsinnige Exceptions entfernen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
C Exceptions identifizieren Java Basics - Anfänger-Themen 5
A Exceptions mit objektreferenzen Java Basics - Anfänger-Themen 4
A Exceptions und methods Java Basics - Anfänger-Themen 2
A Cannot find symbol bei exceptions Java Basics - Anfänger-Themen 2
A Exceptions und Packages Java Basics - Anfänger-Themen 6
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
X Exceptions Benutzereingaben Java Basics - Anfänger-Themen 4
F Exceptions in Interfaces Java Basics - Anfänger-Themen 4
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
L Exceptions und Konten Java Basics - Anfänger-Themen 21
D Frage zu Exceptions Java Basics - Anfänger-Themen 8
G Wie programmiert man Exceptions? Java Basics - Anfänger-Themen 4
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
C Erste Schritte Exceptions nicht verstanden Java Basics - Anfänger-Themen 2
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
T Exceptions - ausgeführte Zeilen Java Basics - Anfänger-Themen 4
J Exceptions Java Basics - Anfänger-Themen 69
C Exceptions Java Basics - Anfänger-Themen 8
C Exceptions Java Basics - Anfänger-Themen 6
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
F Exceptions Java Basics - Anfänger-Themen 6
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
N Compiler-Fehler Drei Exceptions in GUIHack für Dreiecke auf MoveButtons Java Basics - Anfänger-Themen 36
V Welche Exceptions müssen importiert werden? Java Basics - Anfänger-Themen 3
S Exceptions Java Basics - Anfänger-Themen 7
M Vererbung Problem Vererbung/Exceptions Java Basics - Anfänger-Themen 9
S Verschachtelte Exceptions - Übersicht verbessern Java Basics - Anfänger-Themen 2
J Eclipse Exceptions Java Basics - Anfänger-Themen 2
K Schleifen und Exceptions Java Basics - Anfänger-Themen 8
K Exceptions auslagern Java Basics - Anfänger-Themen 15
R NullPointer Exceptions Java Basics - Anfänger-Themen 3
F Erste Schritte Übung zu Exceptions Java Basics - Anfänger-Themen 24
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Int Exceptions Java Basics - Anfänger-Themen 12
M Exceptions per throws oder try Java Basics - Anfänger-Themen 4
M Compiler-Fehler Queue als ArrayList mit Exceptions Java Basics - Anfänger-Themen 3
T Exceptions in einer Klasse Java Basics - Anfänger-Themen 3
B Eigene Exceptions entwerfen Java Basics - Anfänger-Themen 3
H Methoden Überflüssige Exceptions Java Basics - Anfänger-Themen 20
C Exceptions Java Basics - Anfänger-Themen 14
1 While Schleife Exceptions Java Basics - Anfänger-Themen 6
I Erste Schritte Eigene Fehlermeldungen bei Exceptions Java Basics - Anfänger-Themen 19
D Frage zu Exceptions Java Basics - Anfänger-Themen 12
T Exceptions Java Basics - Anfänger-Themen 19
B Wie finde ich Exceptions? Java Basics - Anfänger-Themen 19
Dit_ Input/Output Alle Exceptions protokollieren Java Basics - Anfänger-Themen 9
T Exceptions Java Basics - Anfänger-Themen 12
J Standard Exceptions abfangen Java Basics - Anfänger-Themen 5
F Exceptions werfen oder catchen?? Java Basics - Anfänger-Themen 14
D Exceptions - Ausnahmebehandlung Java Basics - Anfänger-Themen 19
D Frage zu Exceptions und der import Anweisung Java Basics - Anfänger-Themen 12
J Paar Fragen zu Exceptions Java Basics - Anfänger-Themen 16
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
S Exceptions bei push/pop in Stack Java Basics - Anfänger-Themen 8
C Exceptions beim Beenden Java Basics - Anfänger-Themen 2
C TimerTask und Exceptions Java Basics - Anfänger-Themen 5
E Klasse öffnen, mehrere Exceptions Java Basics - Anfänger-Themen 9
C Exceptions Java Basics - Anfänger-Themen 7
G 2 Exceptions in einer Methode Java Basics - Anfänger-Themen 3
firefexx Exceptions werfen Java Basics - Anfänger-Themen 5
0 Exceptions mehrfach fangbar? Java Basics - Anfänger-Themen 4
O Exceptions Java Basics - Anfänger-Themen 3
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
H Diverse Exceptions - Troubleshooting Java Basics - Anfänger-Themen 3
J exceptions Java Basics - Anfänger-Themen 8
sc0p InterruptedExceptions und Exceptions - in Einem! Java Basics - Anfänger-Themen 5
M Frage zu Exceptions Java Basics - Anfänger-Themen 19
M Fragen zu Exceptions Java Basics - Anfänger-Themen 3
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
D Exceptions werfen + beenden Java Basics - Anfänger-Themen 12
M Exceptions aus interface-Methoden Java Basics - Anfänger-Themen 2
S File.renameTo und Exceptions / Fehlermeldung Java Basics - Anfänger-Themen 2
B Exceptions in Liste sammeln? Java Basics - Anfänger-Themen 5
O Eigene Exceptions Java Basics - Anfänger-Themen 11
O "restliche" Exceptions fangen Java Basics - Anfänger-Themen 8
H [Stil] Exceptions in der Klasse behandeln oder throwen? Java Basics - Anfänger-Themen 62
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
V Aktivitätsdiagramm / Exceptions Java Basics - Anfänger-Themen 5
V Exceptions Java Basics - Anfänger-Themen 6
K Frage zu Exceptions -> Logging Java Basics - Anfänger-Themen 6
M Eigene Fehlermeldung bei Exceptions? Java Basics - Anfänger-Themen 12
R JDom Exceptions Java Basics - Anfänger-Themen 4
R Datei einlesen mit Exceptions Java Basics - Anfänger-Themen 2
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
C Reflection Exceptions behandeln Java Basics - Anfänger-Themen 6
G Exceptions - spiegeln wir da nicht einen Spiegel im Spiegel? Java Basics - Anfänger-Themen 10
G Verschiedene Exceptions zu gleichem Block Java Basics - Anfänger-Themen 6
U Frage zu Exceptions Java Basics - Anfänger-Themen 5
mwildam Philosophiefrage zu Exceptions und Rückgabewerten Java Basics - Anfänger-Themen 6
D Static, final Objekte mit Exceptions im Konstruktor Java Basics - Anfänger-Themen 2
G Exceptions Java Basics - Anfänger-Themen 4
G ServerSocket: Exceptions und Timeout Probleme Java Basics - Anfänger-Themen 10
M Exceptions bei Textfeldern abfangen Java Basics - Anfänger-Themen 2
P Problem mit exceptions Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben