Om het wiel niet opnieuw uit te vinden, als je Apache Commons Lang gebruikt, kijk dan eens naar ExceptionUtils.getRootCause().
Is het de moeite waard om alleen daarvoor een bibliotheek op te nemen? Misschien niet. Maar als je het al op je klassenpad hebt, is het er voor jou, en merk op dat het sommige dingen doet die een 'naïeve' implementatie misschien niet doet (bijvoorbeeld omgaan met cycli in de oorzaakketen ... ugh!)