Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich hab mal ein recht prinizipielles bzw. ein Designproblem.
Ich habe ein Klasse A.
Diese Klasse erstellt ein Objekt der Klasse B.
In Klasse B werden wiederum neue Objekte neuer Klassen erzeugt. Sagen wir mal Klasse C.
Und so weiter....
Nun möchte ich in Klasse A überprüfen in welchen Klassen Fehler aufgetreten sind.
Bisher habe ich immer den jeweiligen Rückgabewert der 'untersten' Klasse (C) genommen und über B zu A zurückgebracht.
Ich finde das vorgehen aber recht umständlich und weiss nicht so recht wie ich (man) das besser löst.
Für Exception-Handling gibt es eine ganz einfache Regel:
Die Exception wird bis zu der Stelle geworfen an der entschieden werden kann wie man darauf reagiert(und nicht weiter).
Das versteh ich nicht so recht.
Also ich kann erst in Klasse A entscheiden was passieren soll.
Der Fehler tritt aber in beispielsweise in Klasse C auf.
Das ganze würde ja auch bedeuten dass in in Klasse B die Exception bekomme.
Ich hoffe es kommt rüber was ich meine.
Kannst du/ihr mir das an dem Beispiel näher erklären.
Vielleicht kennt jemand auch ein gutes Beispiel.
Wenn es bei dir wirklich so ist das weder Klasse C, noch Klasse B angemessen auf den Fehler reagieren können, dann währe es in der Tat richtig den Fehler bis zur Klasse A hochzuwerfen.
Ein Beispiel ist zum Beispiel eine kleine Bibliothek zum einlesen von Tastatur Eingaben.
Diese Bibliothek wird von unterschiedlichen Programmen verwendet, und kann daher nicht wissen was im Fehlerfall passieren soll. Also wirft sie die Exception weiter, und überläst der aufrufenden Methode das Exceptionhandling.
Vieleicht solltest du dein Problem etwas konkreter schildern...
Klasse A ist die "View"-Klasse, dort soll dem Benutzer eine Fehlermeldung gegeben werden. Dafür hast du z.B. eine eigene Exception mit dem Namen "UserInputException".
Klasse B macht irgendwas mit der Benutzereingabe und ruft in Klasse C ne Methode auf mit dem Object als übergabe.In Klasse C tritt die Exception auf, z.B. beim Eintragen in ne Datenbank.
Code:
class ViewKlasse{
B b = new B();
void tuwas(Object o){
try{
b.tuWas(o);
} catch(UserInputException e){
// Benutzer benachrichtigen
JOptionPane.showInformationMessage(null, "Fehler: " + e.getMessage());
}
}
}
class B{
C c = new C();
void tuWas(Object o) throws UserInputException{
// mach irgendwas mit o
c.eintragen(o);
}
}
class C{
void eintragen(Object o) throws UserInputException{
try{
// irgendwelche Verarbeitung bei der ne Exception fliegen kann
catch(SQLException sqlEx){
throw new UserInputException("Fehler beim Eintragen.", sqlEx);
}
}
}