We can't override the toString() method on the network client, as what's being returned to users is a vanilla java.sql.SQLException (or one of its subclasses in JDBC4). So it's going to do the default behavior and there's nothing we can do about it.
In the embedded deriver, you'll also get the default toString() output, because in SQLExceptionFactory40 we're converting to vanilla java.sql.SQLException classes and its subtypes.
Running pre-Java SE 6, the user gets an org.apache.derby.impl.jdbc.EmbedSQLException class, and that's kind of ugly to print out, and still wouldn't be consistent with the client.
What I have done (see attached patch) is change the toString() override method in EmbedSQLException to print out "java.sql.SQLException" rather than just "SQL Exception". This is correct, in that EmbedSQLException is a subclass of java.sql.SQLException, and makes the client and the embedded drivers consistent.
Unless anyone objects, I'll commit this (and resulting master output changes) after running derbyall.