Vì lợi ích của việc không phải phát minh lại bánh xe, nếu bạn đang sử dụng Apache Commons Lang, thì hãy xem ExceptionUtils.getRootCause ().
Nó có giá trị bao gồm một thư viện chỉ cho điều đó? Có thể không. Nhưng nếu bạn đã có nó trên classpath của mình, nó ở đó dành cho bạn và lưu ý rằng nó thực hiện một số điều mà một triển khai 'ngây thơ' có thể không làm được (ví dụ:xử lý các chu trình trong chuỗi nguyên nhân ... ugh!)