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.
Schön. Aber sowas kann man ja auch ohne Klassen oder gar Exceptionobjects regeln. Was soll da einen Vorteil von OOP begründen?