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


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