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

David Van Couvering updated DERBY-1629:
---------------------------------------

    Priority: Minor  (was: Major)

> StandardException.unexpectedUserException() does not correctly catch 
> internally generated exceptions as of JDK 1.6
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-1629
>                 URL: http://issues.apache.org/jira/browse/DERBY-1629
>             Project: Derby
>          Issue Type: Bug
>            Reporter: David Van Couvering
>            Priority: Minor
>             Fix For: 10.2.0.0
>
>
> In non-JDK 1.6 builds, the exceptions Derby throws are all of class 
> EmbedSQLException.  As of JDK 1.6, that is no longer true.  Instead we throw 
> a "native" SQL Exception.
> That makes the following code incorrect:
>       public static StandardException unexpectedUserException(Throwable t)
>       {
>               /*
>               ** If we have a SQLException that isn't a Util
>               ** (i.e. it didn't come from cloudscape), then we check
>               ** to see if it is a valid user defined exception range 
>               ** (38001-38XXX).  If so, then we convert it into a 
>               ** StandardException without further ado.
>               */ 
>               if ((t instanceof SQLException) &&
>                   !(t instanceof EmbedSQLException)) 
>               {
>                       SQLException sqlex  = (SQLException)t;
>                       String state = sqlex.getSQLState();
>                       if ((state != null) && 
>                               (state.length() == 5) &&
>                               state.startsWith("38") &&
>                               !state.equals("38000"))
>                       {
>                               StandardException se = new 
> StandardException(state, sqlex.getMessage());
>                               if (sqlex.getNextException() != null)           
>                               {       
>                                       
> se.setNestedException(sqlex.getNextException());
>                               }
>                               return se;
>                       }
>               }
> I am not sure how we can detect internally-thrown SQL Exceptions and 
> distinguish them from user exceptions, but this does need to be looked at.
> Right now procedureInTrigger.sql is failing for JDK 1.6 due to this error.  I 
> may check in a jdk16-specific version of this file so at least derbyall can 
> pass.

-- 
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