Um das Rad nicht neu zu erfinden, schauen Sie sich ExceptionUtils.getRootCause() an, wenn Sie Apache Commons Lang verwenden.
Lohnt es sich, nur dafür eine Bibliothek hinzuzufügen? Vielleicht nicht. Aber wenn Sie es bereits in Ihrem Klassenpfad haben, ist es für Sie da, und beachten Sie, dass es einige Dinge tut, die eine "naive" Implementierung möglicherweise nicht tut (z. B. mit Zyklen in der Ursachenkette umgehen ... ugh!)