Best Practices Exception Handling für eigene library

mephi

Bekanntes Mitglied
Hi,

bezüglich Exception Handling in der eigenen library hätte ich mal ein paar Fragen. Wie handhabt ihr das? Ich benutze innerhalb meiner library eine eigene RuntimeException, einfach der Lesbarkeit halber. So nun sollte nach außen hin aber schon bekannt sein welche Exceptions geworfen werden. Eine Überlegung war nun dass jede Methode die in der API definiert ist ein
Code:
throws ..
anzuhängen und zwar mit einer zweiten eigenen Exception als CheckedException. Irgendwie bin ich mir aber unsicher.
Gibts da best practices?
 
M

maki

Gast
Best Practice: Keine checked Exceptions

Ansonsten jede Exception die geworfen werden könnte immer Dokumentieren.
 
S

SlaterB

Gast
um ein Beispiel zu nennen: Hibernate, Query-Klasse
list

public List list()
throws HibernateException

Return the query results as a List. If the query contains multiple results pre row, the results are returned in an instance of Object[].

Returns:
the result list
Throws:
HibernateException

uniqueResult

public Object uniqueResult()
throws HibernateException

Convenience method to return a single instance that matches the query, or null if the query returns no results.

Returns:
the single result or null
Throws:
NonUniqueResultException - if there is more than one matching result
HibernateException
alles RuntimeExceptions, also wohl wie du es vorschlägst (edit: ok, abgesehen von checked oder nicht),
nicht schön, aber denkbar
 

mephi

Bekanntes Mitglied
Dann muss ich entweder an jede public Methode throws anhängen oder ich muss verfolgen von wo eine Exception alles hinfliegen kann(also eine Methode die von ausen aufgerufen wird) und dann diese Methoden entsprechend mit dem throws deklarieren!? Wenn dann noch Objekte herausgegeben werden die wiederum Methoden anbieten die aufgerufen werden können, kann das doch sehr aufwendig sein.
 
M

maki

Gast
Hä?

Du musst kein "throws" ranhängen, best practice ist die möglichen Exceptions zu dokumentieren (JavaDoc @throws).
Wenn dir das Dokumentieren zu aufwändig ist, solltest du bedenken das Public APIs immer aufwändig sind.
 

mephi

Bekanntes Mitglied
Ok, falsch verstanden.
Aber was ich meine: Bei checked Exceptions seh ich ja schön wo sie hinfliegen. Wenn kein try-catch-Block drum ist und kein throws an der Methode, dann meckert die IDE. So muss ich nun praktisch von Hand verfolgen wo eine Exception ankommen kann oder ich sag eben von vornherein dass jede Methode die von ausen aufgerufen werden kann meine RuntimeExcpetion werfen kann.
 
S

SlaterB

Gast
@maki
also zumindest in dem Hibernate-Beispiel steht das doch anscheinend direkt an den Methoden dran,
ob gut oder schlecht mag man streiten, abwegig ist es damit doch zumindest nicht an dieser Stelle

ich denke das gehört zusammen (throws + JavaDoc-Eintrag)
 
M

maki

Gast
Sieh es mal so:
Überprüfe deine Unittests welche die Exceptions kontrollieren, dann weisst du ja schon wo was fliegen kann.

Mal ernsthaft: Du (als Author), solltest schon eine Ahnung haben wo welche Exception unter welchen Umständen fliegt, Exceptionhandling gehört zum API Design.

Checked Exceptions an sich haben soviele Nachteile dass man sie nicht mehr verwendet, siehe moderne Frameworks/APIs, sieh andere Sprachen (keine ausser Java kennt checked Exceptiions, und in Java hat man sie oft weggewünscht).

@maki
also zumindest in dem Hibernate-Beispiel steht das doch anscheinend direkt an den Methoden dran,
ob gut oder schlecht mag man streiten, abwegig ist es damit doch zumindest nicht an dieser Stelle

ich denke das gehört zusammen (throws + JavaDoc-Eintrag)
Schon richtig SlaterB, beides sollte vorhanden sein, zumindest aber die Doku.
 

mephi

Bekanntes Mitglied
Sieh es mal so:
Überprüfe deine Unittests welche die Exceptions kontrollieren, dann weisst du ja schon wo was fliegen kann.

Mal ernsthaft: Du (als Author), solltest schon eine Ahnung haben wo welche Exception unter welchen Umständen fliegt, Exceptionhandling gehört zum API Design.

Checked Exceptions an sich haben soviele Nachteile dass man sie nicht mehr verwendet, siehe moderne Frameworks/APIs, sieh andere Sprachen (keine ausser Java kennt checked Exceptiions, und in Java hat man sie oft weggewünscht).

Das Problem ist dass ich den Code übernommen habe und die Kernfunktinalitäten eigentlich soweit stehen. Und da ich von Haus aus ein fauler Mensch bin, dachte ich da gibt es eine elegante Lösung :D
Aber gut, danke für eure Antworten. Nun weiß ich immerhin dass es so richtig ist wie ich es mache und somit wurde immerhin dieses wichtigere Anliegen zufriedenstellend geklärt :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Best Practices CopyConstrutor mit ArrayList Allgemeine Java-Themen 1
F Error Logging - best practices? Allgemeine Java-Themen 3
M Best Practices für Undo/Redo Allgemeine Java-Themen 16
G Best Practices Software-Engineering‏ Allgemeine Java-Themen 3
G Best Practices Allgemeine Java-Themen 10
Ameise03 Best&Worst Case bei Insertionsort Allgemeine Java-Themen 10
T Best Practice überprüfen von Übergabeparametern Allgemeine Java-Themen 17
S best practice: Einordnung Enitity und Datenklasse Allgemeine Java-Themen 11
temi best practice: Parameter überprüfen, wo? Allgemeine Java-Themen 9
Airwolf89 JUnit: Vorschläge/ Best Practice Allgemeine Java-Themen 7
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
H Best Practice zu vielen konstanten Objekten? Allgemeine Java-Themen 10
F best practice Allgemeine Java-Themen 5
J Input/Output Dateien bearbeiten - "Best Practice" Allgemeine Java-Themen 3
R Statische Klasse: Best practice mit flags (2) Allgemeine Java-Themen 3
musiKk Best Practice für kleine Variationen in gegebenen Modellklassen Allgemeine Java-Themen 11
S best practise Allgemeine Java-Themen 6
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
Daniel_L Best Practice zum Löschen von Log-Files? Allgemeine Java-Themen 8
S Array: Anzahl Elemente mit best. Wert zählen Allgemeine Java-Themen 4
M Best Match / Best Fit auf Strings Allgemeine Java-Themen 9
G Exception handling - b.practices/tipps. etc. Allgemeine Java-Themen 3
H Object cast exception Allgemeine Java-Themen 7
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
N Kann ich die Nullpointer Exception umgehen Allgemeine Java-Themen 12
N A java Exception has occured Allgemeine Java-Themen 8
G javafx "class path" exception Allgemeine Java-Themen 5
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
tom.j85 Exception bei Abfrage von Ländercodes in API? Allgemeine Java-Themen 13
S Exception Allgemeine Java-Themen 5
LimDul Streams und Exception Allgemeine Java-Themen 8
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
S Wertbeschränkung Exception oder Anpassung? Allgemeine Java-Themen 4
D Nullpointer Exception Problem Allgemeine Java-Themen 5
Kirby.exe Nullpointer Exception bei Queue Allgemeine Java-Themen 5
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
P Swing Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: npoints > xpoints.length || npoints > ypoints.length Allgemeine Java-Themen 5
S RMI Exception Allgemeine Java-Themen 0
S MSSQL Exception & Connection String Allgemeine Java-Themen 19
S Interface, generischer Datentyp, Exception? Allgemeine Java-Themen 3
coolian warum bekomme ich ein string index out of bounds exception Allgemeine Java-Themen 17
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
M Klassen Serializable Exception Allgemeine Java-Themen 1
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
E Thread Exception Allgemeine Java-Themen 6
javaerd Binomialkoeffizient ausrechnen, Exception in thread "main" java.lang.StackOverflowError Allgemeine Java-Themen 6
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
B Exception in Application init method Allgemeine Java-Themen 5
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
M javafx ComboBox- Nullpointer Exception Allgemeine Java-Themen 6
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
E Probleme mit nextInt() und Exception Allgemeine Java-Themen 35
Z Exception wird nicht ausgelöst Allgemeine Java-Themen 2
0 Animiertes Gif anzeigen - NullPointer Exception Allgemeine Java-Themen 19
T Konstruktor löst exception aus Allgemeine Java-Themen 7
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
V Compiler-Fehler Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125 Allgemeine Java-Themen 11
D Codeausführung bevor Exception abgeschlossen ist Allgemeine Java-Themen 11
T FileNotFound Exception Allgemeine Java-Themen 9
L Exception/Error auf JDialog umleiten Allgemeine Java-Themen 2
C Arithmetic Exception, obwohl nichts 0 ist Allgemeine Java-Themen 5
M A Java Exception has occured. Allgemeine Java-Themen 1
J Exception in thread "main" java.lang.NoClassDefFoundError Allgemeine Java-Themen 4
M Exception in thread "AWT-EventQueue-0" Allgemeine Java-Themen 6
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
E A Java Exception Has Occured Allgemeine Java-Themen 4
T Exception handling Allgemeine Java-Themen 7
P lazy loading exception Allgemeine Java-Themen 0
A Interpreter-Fehler OutOfMemory Exception mit Base64 decode Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
S Best Practice verschiedene Exceptions fangen und neue Exception erzeugen Allgemeine Java-Themen 11
K Exception in thread "AWT-EventQueue-1" Allgemeine Java-Themen 2
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
P Eigene Exception Klasse Allgemeine Java-Themen 7
N Java Interne Exception Allgemeine Java-Themen 4
B JUnit4 Exception-Test Allgemeine Java-Themen 4
127.0.0.1 SQL Exception, kein Driver Allgemeine Java-Themen 9
S Erste Schritte Exception beendet Schleife nicht - Methode macht trotz throw weiter? Allgemeine Java-Themen 9
R ZIP FileSystem unter Windows wirft exception Allgemeine Java-Themen 7
H java.util.Timer und Funktion mit SQL Exception Allgemeine Java-Themen 5
Ollek Barcode mit Barcode4J erzeugen - Exception Allgemeine Java-Themen 4
Z Concurrent Modification Exception - HashMap (kein remove) Allgemeine Java-Themen 4
E Eigene Exception Klasse erstellen Allgemeine Java-Themen 3
L Variablen IO Exception weil File angeblich nicht exisitert Allgemeine Java-Themen 10
T Exception versus Rückgabeparamter Allgemeine Java-Themen 26
S Exception enableDepthTest Allgemeine Java-Themen 7
M JAXB Reimport zu Hibernate DB -> Exception Allgemeine Java-Themen 3
W Kleine Frage zu Null-Pinter-Exception Allgemeine Java-Themen 21
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
S Null Pointer Exception bei BufferedReader Allgemeine Java-Themen 4
N Runtime.exec() Exception Problem Allgemeine Java-Themen 3
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
S Bildaufbau durch Servlet -> Exception Allgemeine Java-Themen 11

Ähnliche Java Themen


Oben