Tach!
Hast du mal ein praktisches Beispiel was die Sinnfälligkeit dafür zeigt Exceptions in Klassen zu organisieren und Instanzen gefallener Exceptions zu erstellen?
Ja klar, gibts überall wo Exceptions derart existieren.
Wenn man eine Funktion aufruft, kann es viele Ursachen haben, nicht erfolgreich zu sein. Bestimmte Ursachen erwartet man und kann sie vor Ort beheben, andere nicht und überlässt sie dem Aufrufer.
Ein Beispiel sei das Lesen einer Datei. Ursachen für das Misslingen können sein, dass die Datei nicht existiert oder dass Berechtigungen nicht ausreichen. Man könnte nun die FileNotFoundException abfangen, die Datei anlegen und eine leere Datei zurückgeben. Bei unzureichenden Berechtigungen gibt es keine sinnvolle Sofortmaßnahme. Die AccessDeniedException fängt man also nicht ab und überlässt sie dem Aufrufer.
Beim Instantiieren übergibt man dem Konstruktor meist nur einen Text und vielleicht noch ein paar andere interessante Parameter. Aber die allgemeinen Dinge, wie Ort des Geschehens und Stacktrace kann der Konstruktor der Exceptionklasse selbst ermitteln und in seine entsprechenden Datenfelder ablegen.
dedlfix.