Why there are two different ways to chain an Exception in Java ? Which is better for what cases?
===

These are the two ways that we can do exception chaining :


    Throwable initCause(Throwable)
    Throwable(Throwable)

I think the second one is more elegant and more widely used . Then why is that some standard exceptions in the Java core library actually lack a chain aware constructor ? 

