You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2007/05/11 11:02:15 UTC
[jira] Assigned: (DERBY-2472) Use Throwable.initCause() to improve
error reporting
[ https://issues.apache.org/jira/browse/DERBY-2472?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Knut Anders Hatlen reassigned DERBY-2472:
-----------------------------------------
Assignee: Knut Anders Hatlen
Assigning the issue to me since I'm working on it as a background task. If someone needs this to be resolved quickly, feel free to reassign the issue, and I'll upload whichever partial patch I have at that point.
Right now what I'm experimenting with is to replace StandardException's set/getNestedException() and EmbedSQLException's getJavaException() with initCause/getCause. I'm also using initCause() to link EmbedSQLException's next exception if no other cause has been specified. An example of the improved error reporting using this approach:
Running CharacterStreamsTest with the DERBY-827 patch normally gives this error (stack frames removed):
java.sql.SQLException: Java exception: 'ASSERT FAILED Unexpected exception: org.apache.derby.shared.common.sanity.AssertFailure'.
With the suggested chaining, this is what JUnit will report:
java.sql.SQLException: Java exception: 'ASSERT FAILED Unexpected exception: org.apache.derby.shared.common.sanity.AssertFailure'.
Caused by: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED Unexpected exception
Caused by: ERROR XCL30: An IOException was thrown when reading a 'java.sql.String' from an InputStream.
Caused by: java.io.EOFException
However, it will take some time to clean up the regression tests.
> Use Throwable.initCause() to improve error reporting
> ----------------------------------------------------
>
> Key: DERBY-2472
> URL: https://issues.apache.org/jira/browse/DERBY-2472
> Project: Derby
> Issue Type: Improvement
> Components: JDBC, Miscellaneous
> Affects Versions: 10.3.0.0
> Reporter: Kristian Waagan
> Assigned To: Knut Anders Hatlen
> Priority: Minor
> Attachments: derby-2472_initial_patch.diff, setStackTrace-v2.diff, setStackTrace.diff
>
>
> As Derby has moved to J2SE 1.4, Throwable.initCause() can now be used to improve error reporting.
> As stated in the initial commit (that was backed out, see below):
> 'Set Throwable.initCause() in a couple of locations at the JDBC level where we setup nested SQLExceptions.
> This means that automatically the stack trace for a database failed to start includes the reason
> for the failure, rather than just "see next exception". This is a great help when running
> JUnit tests and getting failures to start a database.'
> The initial commit was backed out because it broke numerous tests under JDK 1.6, and the author indicated he had no time to investigate.
> The patch caused no failures when running the tests with Java SE 5.0.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.