Verwendung von unchecked exceptions & bereits vorhandenen exceptions was priorisieren

Status
Nicht offen für weitere Antworten.

maulwurfen

Neues Mitglied
Hallo zusammen,

man liest ja immer wieder, dass man unchecked exceptions den checked exceptions vorziehen soll. Weiterhin gilt es ja als guter Stil, wenn man nicht für alles eine eigene Exception entwerfen soll, sondern auf bereits vorhandene Exceptions zurückgreifen soll (sofern möglich natürlich). Leider beißen sich diese beiden Ansätze von Zeit zu Zeit. Deshalb wäre meine Frage, ob es best practices gibt die einen der beiden Ansätze priorisieren?

Ich habe z.b. eine Methode getFilepath(), die nur einen Dateipfad zurückgeben soll, wenn die Datei bereits gespeichert wurde. Ist dies nicht der Fall, möchte ich einen Exception werfen lassen. Um das zu erreichen, werfe ich einen NoSuchFieldError (unchecked). Jetzt kommt jedoch eine weitere Methode (checkAttachmentState()) hinzu, die den direkten Aufruf der Methode getFilepath() kapselt und in deren Kontext eine FileNotFoundException (checked) viel logischer erscheint als ein NoSuchFieldError.

Meine Frage ist jetzt, was gilt denn in einem solchen Fall als guter Programmierstil? NoSuchFieldError weiterverwenden und somit beide o.g. Ansätze vereinen, auch wenn der Name des Fehlers nicht intuitiv und für den Kontext passend ist? Oder eine checked Exception a la FileNotFoundException werfen, dabei gegen einen der o. g. Ansätze verstoßen und dafür aber eine zum Kontext passende Exception nutzen? Oder doch eine eigene unchecked Exception ableiten? Würde gerne mal eure Meinungen dazu lesen.

Gruß
maulwurfen
 
M

maki

Gast
IllegalArgumentException wäre eine Möglichekit, oder eben die FileNotFoundException.
Man kann ja zum Glück (oder war es Absicht?) eine aussagekräftige Message mitliefern..

Ich habe z.b. eine Methode getFilepath(), die nur einen Dateipfad zurückgeben soll, wenn die Datei bereits gespeichert wurde. Ist dies nicht der Fall, möchte ich einen Exception werfen lassen.
Das ergibt nur Sinn, wenn der Client die Möglichkeit hat, vorher zu prüfen ob die Datei auch existiert, sonst wäre der Client ja gezwungen, immer einen try/catch Block zu machen... fast wie bei checked Exceptions ;)
 

tfa

Top Contributor
Zur Not würde ich eine eigene Runtime-Exception programmieren, statt auf eine checked Exception zurückgreifen zu müssen.
Wenn man eine existierende Exception verwendet, sollte sie schon irgendwie (semantisch) zu der Situation passen, nicht nur dem Namen nach. Diesen NoSuchFieldError würde ich hier nicht verwenden. Ein Error ist doch etwas zu speziell dafür.
 

maulwurfen

Neues Mitglied
IllegalArgumentException wäre eine Möglichekit, oder eben die FileNotFoundException.
Man kann ja zum Glück (oder war es Absicht?) eine aussagekräftige Message mitliefern..


Das ergibt nur Sinn, wenn der Client die Möglichkeit hat, vorher zu prüfen ob die Datei auch existiert, sonst wäre der Client ja gezwungen, immer einen try/catch Block zu machen... fast wie bei checked Exceptions ;)

Hallo maki,

danke für deine schnelle Antwort. Grundsätzlich gebe ich dir bei o. g. recht, allerdings kann der Entwickler den Status des Attachments mittels getState() vorher abrufen. Es ist also beabsichtigt, dass eine Exception geworfen werden soll wenn der Entwickler ohne Statuscheck blind auf den Dateipfad zugreifen möchte. Deshalb würde ich aber gerne checkedExceptions vermeiden, da ein catch nicht notwendig ist, wenn man den Status vorher abruft. Und einfach nur null zurückliefern finde ich auch nicht schön, da dies nochmals eine zweite If-Abfrage (neben dem Statuscheck) mit sich bringt um NullPointer zu vermeiden und zudem nach Robert Martin (Clean Code: A Handbook of Agile Software Craftmanship) generell null als Rückgabewert vermieden werden soll.

IllegalArgumentException habe ich bis dato eigentlich immer nur bei Parametern verwendet und habe sie auch diesem Kontext zugeordnet. Sollte ich aber keine geeignetere Exception hierfür finden ist das sicherlich eine Variante, die gangbar wäre. Danke ;)

Hat jemand eigentlich eine gute Übersicht aller unchecked exceptions? Ich kenne nur eine Übersicht aller Ausnahmen (checked und unchecked) unter Java Exceptions List Hai’s Blog und die Listen über unchecked exceptions, die ich gefunden habe, sind doch recht unvollständig.

Gruß
maulwurfen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z JNA Cpp-DLL String Verwendung Allgemeine Java-Themen 2
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
F Klassen Verwendung abstrakter Klassen Allgemeine Java-Themen 9
K Saubere Verwendung von Generic Types Allgemeine Java-Themen 7
D Verwendung von Selenium Allgemeine Java-Themen 2
P ClassCastException bei Verwendung eines Interfaces Allgemeine Java-Themen 7
M Fehler bei Verwendung von TexturePaint Allgemeine Java-Themen 16
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
M Verwendung der Cipher von gnu crypto (Serpent) Allgemeine Java-Themen 3
B Verwendung von Packages im Java Code Allgemeine Java-Themen 10
P Richtige Verwendung eines Timers Allgemeine Java-Themen 8
T Warnungsfreie Verwendung von Generics Allgemeine Java-Themen 11
M Problem bei der Verwendung von AES Allgemeine Java-Themen 2
J Port verwendung Allgemeine Java-Themen 13
X Wie 'teuer' ist die Verwendung des Stack Trace ? Allgemeine Java-Themen 8
Final_Striker Exceptionhandling: Richtige Verwendung des Try/Catch Blocks Allgemeine Java-Themen 14
W Verwendung von byte Allgemeine Java-Themen 9
L Verwendung? Allgemeine Java-Themen 2
D Fehlerhafte Thread Verwendung beim arbeiten mit Sockets Allgemeine Java-Themen 6
N allg. Frage zur Verwendung von this Allgemeine Java-Themen 3
G Verwendung von DataInputStream und URL Allgemeine Java-Themen 2
C Seltsame Konstanten (und Verwendung) Allgemeine Java-Themen 15
X Exception bei Verwendung von systray4j Allgemeine Java-Themen 5
G JComboBox XYZ uses unchecked or unsafe operations Allgemeine Java-Themen 1
S Unchecked cast from Component to JComboBox<String> Allgemeine Java-Themen 3
E Heap und Comparable (warning: [unchecked] unchecked cast) Allgemeine Java-Themen 2
MQue unchecked conversation Allgemeine Java-Themen 3
O unchecked cast? Allgemeine Java-Themen 4
reibi Unchecked cast Allgemeine Java-Themen 1
B unchecked cast Error Allgemeine Java-Themen 2
M Vector add() unchecked? Allgemeine Java-Themen 5
G Unchecked/Unsafe Operation Allgemeine Java-Themen 8
H [unchecked] unchecked cast Problem Allgemeine Java-Themen 5
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
M Exceptions - wann / wie verwenden? Allgemeine Java-Themen 4
W Exceptions behandeln Allgemeine Java-Themen 16
Kirby.exe Exceptions erklärt Allgemeine Java-Themen 5
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
J Exceptions Allgemeine Java-Themen 1
Z Java Exceptions - Auf leeres Feld prüfen Allgemeine Java-Themen 10
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
L Nullpointer Exceptions werden nicht angezeigt Allgemeine Java-Themen 5
V Exceptions Allgemeine Java-Themen 2
G Exceptions mit jre 7u40 Allgemeine Java-Themen 2
S Best Practice verschiedene Exceptions fangen und neue Exception erzeugen Allgemeine Java-Themen 11
E LookAndFeel Exceptions bei UIManager.setLookAndFeel Allgemeine Java-Themen 4
W JavaDoc Runtime-Exceptions: Wie sinnvoll anzeigen? Allgemeine Java-Themen 14
C Threads und Exceptions Allgemeine Java-Themen 7
B Webstart Exceptions Allgemeine Java-Themen 7
R Threads Exceptions von Threads abfangen im ThreadPool Allgemeine Java-Themen 5
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
G Internationalisierung von Exceptions Allgemeine Java-Themen 5
J JUnit - werfen von Exceptions testen Allgemeine Java-Themen 17
F Alle Exceptions abfangen Allgemeine Java-Themen 4
B Alle Exceptions auf einmal abfangen Allgemeine Java-Themen 4
G log4j - Behandlung nicht explizit abgefangener Exceptions Allgemeine Java-Themen 5
B Logging von Exceptions Allgemeine Java-Themen 7
G Designfrage: Exceptions in Konstruktoren Allgemeine Java-Themen 7
I Exceptions - weder catch- noch finally-Klausel funktioniert Allgemeine Java-Themen 12
hdi Verhalten bei nicht behandelten Exceptions Allgemeine Java-Themen 2
H Exceptions und IO Allgemeine Java-Themen 17
B Exceptions? Allgemeine Java-Themen 4
D Throws Exceptions Allgemeine Java-Themen 14
M Verständnisfrage Exceptions Allgemeine Java-Themen 2
V Exceptions als Fehlerbehandlung "missbrauchen"? Allgemeine Java-Themen 10
DEvent Wie behandelt man Exceptions in Iterator? Allgemeine Java-Themen 2
J Verständnisfrage zu exceptions Allgemeine Java-Themen 3
A Junit Exceptions testen Allgemeine Java-Themen 3
R Loading-Thread und Exceptions abfangen. Allgemeine Java-Themen 4
P Exceptions dokumentieren. Allgemeine Java-Themen 6
G Exceptions weiterwerfen Allgemeine Java-Themen 2
T Generics und Exceptions Allgemeine Java-Themen 6
P Exceptions throw Allgemeine Java-Themen 6
F Wann und wie Exceptions einsetzen? Allgemeine Java-Themen 13
J Method.invoke -> Exceptions der Funktion abfangen Allgemeine Java-Themen 5
T Frage zu Exceptions Allgemeine Java-Themen 3
G Java-Exceptions werden nicht ganz angezeigt. Wo ändern? Allgemeine Java-Themen 3
J Probleme mit Exceptions Allgemeine Java-Themen 11
R Exceptions mit aktuellen Programminformationen ausgeben? Allgemeine Java-Themen 2
märliprinz com.sap.dbtech.jdbc.exceptions.JDBCDriverException Allgemeine Java-Themen 2
G Alle Exceptions loggen Allgemeine Java-Themen 4
G Frage zu Exceptions Allgemeine Java-Themen 6
M err oder alle Exceptions eines Programms abfangen Allgemeine Java-Themen 4
G Exceptions ohne Zeilennummer (Unknown Source) Allgemeine Java-Themen 8
T Exceptions im statischem Klassencode Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben