Designfrage: Exceptions in Konstruktoren

G

Gast2

Gast
Hi,
ich implementier hier grad einen Graphen und bin am Überlegen wie man folgende Situation am besten lösen könnte:

Ich habe diese drei Konstruktoren:

Java:
    public DirectedGraph(ArrayList<Node> nodes, ArrayList<Edge> edge) throws IllegalNodeException, IllegalEdgeException {
        /* check nodes and edges */
    }

    public DirectedGraph(ArrayList<Node> nodes) throws IllegalNodeException, IllegalEdgeException {
        this(nodes, new ArrayList<Edge>());
    }

    public DirectedGraph() throws IllegalNodeException, IllegalEdgeException {
        this(new ArrayList<Node>(), new ArrayList<Edge>());
    }
Im obersten Kontruktor prüfe ich dann noch ob die Übergebenen Knoten und Kanten gültig sind, z.b. ob kein Knoten doppelt übergeben wird, ob alle Kanten End und Anfangspunkte vorhanden sind, ob sich negativ zyklische Graphen bilden etc.
Ich möchte gerne vermeiden, dass jeder Konstruktor 2 Exceptios "werfen kann". Der zweite Konstruktor würde ohne IllegalEdgeException und der dritte komplette ohne Exceptions auskommen.

Wie kann ich das geschickter machen?
 

faetzminator

Gesperrter Benutzer
Von [c]RuntimeException[/c] erben, Checked Exceptions sind irgendwie... komisch.
Ansonsten die Exception selbst fangen oder pro Konstruktor die jeweiligen Methoden selber aufrufen. Dabei kann natürlich [c]DirectedGraph(ArrayList<Node>, ArrayList<Node>)[/c] direkt [c]DirectedGraph(ArrayList<Node>)[/c] verwenden. In jedem Konstruktor einen Check machen. Du solltest lieber [c]List<Node>[/c] verwenden.
 
G

Gast2

Gast
Ich hab meine Exceptions jetzt von RuntimeException erben lassen, das war nen guter Tipp, danke.
 

FArt

Top Contributor
Ich hab meine Exceptions jetzt von RuntimeException erben lassen, das war nen guter Tipp, danke.

Das finde ich nicht, zumindest nicht ohne tieferes Wissen zu dem Kontext, in dem der Code verwendet wird und mit der Begründung "checked exceptions sind irgendwie komisch".

Deklarierte Exceptions sind wichtig, wenn der Benutzer darauf reagieren können muss. Das ganze zwingend über RuntimeExceptions abzufackeln, weil der Code schöner aussieht ist ganz schlecht. Im Endeffekt wird der Benutzer trotzdem die (Runtime)Exceptions fangen und behandeln müssen. Ist das nicht der Fall, sind eigene Exceptions (vor allem verschiedene Exceptions) ein Antipattern. Eine IllegalStateException oder IllegalArgumentException wäre dann besser und diese wären sogar RuntimeExceptions.

Ob hier eigene deklarierte Exceptions gut oder schlecht sind lässt sich nur anhand dieses Codes nicht sagen.

Tipp: Exception-Handling Antipatterns | Java.net
 
B

bygones

Gast
Im Endeffekt wird der Benutzer trotzdem die (Runtime)Exceptions fangen und behandeln müssen.
die Frage ist eher KANN sich der Verwender um die exception kuemmern.

Falls der Verwender sie unnoetig behandeln muss ist eine RuntimeException weit besser, in diesem Fall MUSS er sie aber nicht behandeln.

Falls der Verwender dies aber kann oder sogar muss / soll, so kann hier auch checked Exception genutzt werden, wobei auch hier zu überprüfen ist ob eine unchecked nicht dennoch besser waere.

Allgemein sind Exceptions ein heisses Diskussionsthema
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Designfrage: try-catch-throws Allgemeine Java-Themen 11
L Designfrage: Dispatcher-Programmierung - redundante Auslegung Allgemeine Java-Themen 1
F.S.WhiTeY Designfrage bzw. Meinung zur Umsetzung Allgemeine Java-Themen 39
G Designfrage Vererbung ja oder nein Allgemeine Java-Themen 9
E Wie anfangen? Konzept / Designfrage Allgemeine Java-Themen 17
heart_disease Designfrage: Statische Konfigurationsklasse Allgemeine Java-Themen 10
sliwalker Designfrage: Dateninhalte in Komponenten variabel halten Allgemeine Java-Themen 4
N DesignFrage FactoryPattern Allgemeine Java-Themen 7
N verschiedene Klasse laden (Designfrage) Allgemeine Java-Themen 2
A Designfrage zu Dateimanager Allgemeine Java-Themen 4
O Designfrage Allgemeine Java-Themen 6
T Designfrage: Viele, kleine Objekte Allgemeine Java-Themen 13
T Designfrage: Audiochat Allgemeine Java-Themen 3
S Designfrage Allgemeine Java-Themen 3
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
I Exceptions - weder catch- noch finally-Klausel funktioniert Allgemeine Java-Themen 12
M Verwendung von unchecked exceptions & bereits vorhandenen exceptions was priorisieren Allgemeine Java-Themen 3
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
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
S Konstruktoren in Java Allgemeine Java-Themen 11
K Java Konstruktoren beim Initialisieren aufrufen Allgemeine Java-Themen 10
D "Spielen" mit Konstruktoren Allgemeine Java-Themen 8
S Wie vererbe ich vernünftig bei stark überladenen Konstruktoren? Allgemeine Java-Themen 12
J Zwei konstruktoren? Allgemeine Java-Themen 8
S Konstruktoren, verschiedene Klassen, Methoden. Allgemeine Java-Themen 3
T Konstruktoren Allgemeine Java-Themen 4
T Konstruktoren werden nicht in Javadoc angezeigt Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben