[ http://issues.apache.org/jira/browse/DERBY-2181?page=all ]

Andrew McIntyre closed DERBY-2181.
----------------------------------

    Resolution: Invalid

Closing at request of reporter.

> StandardException.printStackTrace() does not print the nested exception 
> (cause)
> -------------------------------------------------------------------------------
>
>                 Key: DERBY-2181
>                 URL: http://issues.apache.org/jira/browse/DERBY-2181
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.2.1.6
>         Environment: Java 1.5
>            Reporter: Christian d'Heureuse
>
> In my Servlet application, an I/O error occurred, but I couldn't see the 
> error message of the I/O error.
> At line 298 in StandardException.java, the I/O exception is packed into a 
> StandardException:
>    throw StandardException.newException(
>       SQLState.DATA_UNEXPECTED_EXCEPTION, ioe);
> When my Servlet catches the exception, it calls Throwable.printStackTrace() 
> to generate a detailed error message. The output of printStackTrace() does 
> not list the nested I/O exception.
> In Java 1.5, Throwable.printStackTrace() calls getCause() to get the nested 
> exception. GetCause() returns null, because the cause has not been set.
> One solution could be to override Throwable.getCause() and initCause() in 
> StandardException to get and set the nested exception. There are already 
> getNestedException() and setNestedException() methods in StandardException 
> which could be mapped to getCause() and initCause().
> Another solution could be to change the constructor
>    StandardException(String messageID, Throwable t, Object[] args)
> This constructor currently calls
>    super(messageID);
> Instead it could call
>    super(messageID,t);
> to pass the nested Exception.
> StandardException.setNestedException() could be changed to call 
> Throwable.initCause(). But the API docs of initCause() state stat "This 
> method can be called at most once". So it's probably better to override 
> getCause() and initCause().
> A problem might me that Throwable.getCause() and initCause() have been 
> introduced in Java 1.4. But if these methods are implemented in 
> StandardException, they would be just normal methods in Java 1.3 and 
> overrides in Java >= 1.4.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to