Aby nie wymyślać koła na nowo, jeśli używasz Apache Commons Lang, spójrz na ExceptionUtils.getRootCause().
Czy warto do tego dołączyć bibliotekę? Może nie. Ale jeśli masz go już na swojej ścieżce klas, jest tam dla ciebie i pamiętaj, że robi pewne rzeczy, których „naiwna” implementacja może nie zrobić (np. radzi sobie z cyklami w łańcuchu przyczyn… ugh!)