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