Exception Handing?

juandeluca

Mitglied
Hallo!

Wie soll Exception Handling am besten gemacht werden?

Ich bin sicher es gibt einige Theorien, wie man Exceptions am besten handeln soll und ob man sie dem User anzeigt oder sie irgendwo in eine Log-Datei schreibt.

Mich interessiert hier allerdings zuerst, wie die am meisten "zu ratendende" Methode wäre. Bisher mache ich es so, dass ich die geworfenen Exceptions soweit wie möglich den Baum hochtrage. Das bedeutet, dass ich wenn möglich auf try-catch verzichte und mich des throws oben an jeder Methode bediene, um dann in der rufenden Methode eine Lösung dazu zu finden.

Wie ist denn nun die beste Methode, um Exceptions zu managen? Gibt es in Java eine Richtlinie?
 

Da_Tebe

Mitglied
Ja gute Frage. Interessiert mich auch sehr.
Erste Richtlinie ist natürlich so zu Programmieren das keine Exceptions entstehen können.

Sobald man aber Input/Output-Streams etc. anwendet kommt man ja nicht drum rum.
Dann sollte man sich bestimmt fragen wer von der Exception wissen muss. Muss der Aufrufer der methode das verarbeiten? Oder reicht ein einfacher Logeintrag um es später nachzuvollziehen und die methode beendet sich einfach..oder versucht es nochmal... naja

Wie gesagt würde ich dazu auch gerne mal Meinungen und Vorschläge hören =)
 

xKoRe

Mitglied
Ich betrachte Exception auch gerne als zusätzlichen Rückgabewert (z.B. invalidInput). Natürlich sollte man sie dann auch direkt abfangen, allerdings hat man sofort Aufschluss darüber was passiert ist. Je früher du dich darum kümmerst, desto genauer kann der Fehler bestimmt werden.

Deswegen finde ich, kann es auch sehr sinnvoll sein eigene Exceptions einzubringen und sie absichtlich zu werfen. Von Log-Dateien halte ich nur etwas, wenn es im Zusammenspiel mit einer Userrückgabe geschieht.

Ausserdem kommt es auch immer darauf an, weswegen deine Exception ausgelöst wurde, und welcher Art sie ist.

Beispiel: Ich habe ein Eingabefeld und versuche eine Zahl auszulesen. Der User gibt Buchstaben mit ein, dadurch entsteht die Exception, die du ausschliesslich über eine Userbenachrichtigung ausgibst. Schliesslich liegt der Fehler beim Benutzer (ein völlig fehlerfreies Bedienfeld zu erstellen ist immer schwieriger).

Andererseits habe ich auch schon Ansätze gesehen, die sich darum handeln Fehler dynamisch zu lösen und nur im absoluten Scheitern den Fehler auszugeben/in eine Log zu schreiben.

Alles in allem ist meine Empfehlung: Behandle jede Exception so früh wie möglich. Nach oben tragen nur, wenn deine Exception spezifisch genug unterschieden werden können um eine sinnvolle Behandlung zu ermöglichen.
 

tfa

Top Contributor
Nach oben tragen nur, wenn deine Exception spezifisch genug unterschieden werden können um eine sinnvolle Behandlung zu ermöglichen.
...oder, wenn eine Behandlung im Sinne von Behebung nicht möglich ist (was nach meiner Erfahrung auf einen Großteil der Exceptions zutrifft).
Statt an alle Methoden [c]throws[/c] dranzuschreiben, kann man eine Exception auch in eine RuntimeException kapseln. So hält man sein Interface sauber.
 
S

Spacerat

Gast
Mit RuntimeExceptions wäre ich vorsichtig, ich würde zumindest keine oder besser gesagt eher selten eigene implementieren. "Legale" Kanditaten für RTEs wären NullPointer-, IllegalArgument- und notfalls noch UnsupportedOperationException.
Am Beispiel Streams erkennt man, dass es durchaus Ausnahmefehler gibt, über die der Aufrufer informiert werden sollte. Für z.B. fehlerhafte Festplattensektoren beim Lesen einer Datei kann kein Mensch etwas. Für falsch übergebene Parameter allerdings schon.
Alles in allem bedeutet das, dass es Situationsbedingt ist (ganz wie tfa es sagt), wie man sich bei Exceptions zu verhalten hat. Hier da und dort in RTEs zu Kapseln ist deswegen auch nur manchmal eine gute Idee. Nach dem Motto: "Was soll ich mich sorgen. Mach' du dir doch Sorgen. Mir gehen die Ideen aus."
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
G Exception Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Exception Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
OSchriever Exception für Abbrechen-Schaltfläche JOptionpane Java Basics - Anfänger-Themen 9
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
J Exception unreachable Java Basics - Anfänger-Themen 12
O unchecked Exception Java Basics - Anfänger-Themen 4
P Exception werfen Java Basics - Anfänger-Themen 15
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
S Exception bei Verwendung von LocalDate Java Basics - Anfänger-Themen 19
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
D Warum die Nullpointer Exception Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
I OOP Was ist die "Exception Hierarchie" ? Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
G Exception und Ausgabe der Duplikate Java Basics - Anfänger-Themen 6
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
Mosquera Exception Java Basics - Anfänger-Themen 5
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
N Nullpointer exception Java Basics - Anfänger-Themen 4
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Array Grenzen-Exception Java Basics - Anfänger-Themen 11
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
G Arrays out of Bounds exception Java Basics - Anfänger-Themen 2
H Compiler-Fehler Out of Bunce Exception bei einem Char Java Basics - Anfänger-Themen 6
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
C Null Pointer Exception Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
G Null Pointer Exception Java Basics - Anfänger-Themen 4
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
O Exception bei Parse-Vorgang Java Basics - Anfänger-Themen 17
T Exception Problem Java Basics - Anfänger-Themen 5
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
W Nullpointer Exception bei .add(...) Java Basics - Anfänger-Themen 6
L Input/Output InputMismatch.Exception Java Basics - Anfänger-Themen 7
B Exception Liste von Liste Java Basics - Anfänger-Themen 3
D Throw Exception Java Basics - Anfänger-Themen 2
MiMa JavaDoc Exception @throws schlagen an Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
M Selbstdefinierte Exception Java Basics - Anfänger-Themen 5
B Exception Throwable Java Basics - Anfänger-Themen 11
M Erste Schritte Start Methode - Exception Java Basics - Anfänger-Themen 1
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
F nullpointer exception - arrayerstellung Java Basics - Anfänger-Themen 4
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
H Erste Schritte Exception: 0 Java Basics - Anfänger-Themen 2
A Exception vs. Testklasse (Programm testen) Java Basics - Anfänger-Themen 2
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
K Exception nur im "Debug"-Modus und jedem 3.-5. mal Ausführen Java Basics - Anfänger-Themen 3
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
R "Missbrauch" von Exception zum Programmfluss Java Basics - Anfänger-Themen 1
U Exception: OutOfMemoryError Java Basics - Anfänger-Themen 11
A Int Eingabe: String mit Exception abfangen. Aber wie? Java Basics - Anfänger-Themen 3
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
V Threads Exception in Thread behandeln Java Basics - Anfänger-Themen 3
F Java exception bei der Ausführung Java Basics - Anfänger-Themen 10

Ähnliche Java Themen


Oben