Hallo,
ich würde Exceptions immer nur bis zu einer Komponenten-Grenze
hochreichen. Dazwischen gibt es dann im schlimmsten Fall eine neue
Exception, die an die nächste "Schicht" weitergegeben wird. Im besten
Fall wird die Exception an der Grenze abgefangen und ein definierter
Wert wird an den Aufrufer zurückgegeben.
Loggen würde ich das auftreten der Exception so dicht an der Stelle wo
wie auch entsteht - dort hast du am meisten Kontext-Informationen
warum und unter welchen Bedingungen die Exception aufgetreten ist.