In the JDBC driver, for some SQLException thrown to wrap underlying exceptions, the thrown SQLException's message text does not include any information from the underlying exception.
The means that the underlying message text is less likely to be visible to the end user. (For example, SQLLine display's a SQLException's message text, but not normally its stack track or the message text of chained exceptions.)
(Note that does not apply to UserExceptions from the server; that case is already handled.)
For those cases, the JDBC driver should copy more information into the top-level SQLException's message text (e.g., copy the message text of the next chained exception, as it already does for UserExceptions.)