On 12/5/14 6:38 AM, Camilla Haase wrote:
I think these subclasses are not specific to Derby but are found in the Java SE API package java.sql.

Kim

On 12/4/2014 5:55 PM, Myrna van Lunteren wrote:
Moving this discussion to derby-dev...

Forgive my ignorance in this area...

I had a look at the Derby source code and we do not currently seem to
have any subclasses of SQLException, except SQLExceptionWrapper.

(There are some client exceptions that extend SqlException, but that one
extends Exception, not SQLException).

I wonder why this was not done before - presumably there was no need
before? Are there negatives connected to extending
java.sql.SQLException? Does anyone have insights on this?
The JDBC spec requires drivers to return the refined subclasses of java.sql.SQLException which were introduced in Java 6. I don't think we are forbidden to further refine those subclasses. But we would want to verify that.

Before doing this, I would want us to agree on a model for how far this refinement goes. I assume that we don't want to introduce a separate subclass for each possible SQLState. The SQLStates are organized into families, identified by the leading two digits of the SQLStates. We could introduce a separate subclass for each of those families, but that would still be a lot of subclasses and it wouldn't solve John's problem.

I'm not a big fan of introducing new subclasses of SQLException on an ad-hoc basis.

Thanks,
-Rick

Myrna


On Thu, Dec 4, 2014 at 1:44 PM, Rick Hillegas <rick.hille...@gmail.com
<mailto:rick.hille...@gmail.com>> wrote:

    On 12/4/14 2:26 AM, John English wrote:

        On 02/12/2014 00:30, Rick Hillegas wrote:

            On 12/1/14 4:08 AM, John English wrote:

                However, why not in any case consider deriving a
                separate subclass of
                SQLException for the duplicate key case? It wouldn't
                break any existing code,
                it's presumably easy to identify the code sites which
                should throw it, and it
                would clarify exception handling in some cases.

            Hi John,

            Note that the SQLException which is thrown is already a
            refined subclass of
            SQLException. The failed insert will throw a
            java.sql.__SQLIntegrityConstraintViolatio__nException. That
            may help you code this
            approach to the problem.


        But wouldn't this also be thrown by other causes such as a check
        constraint or foreign key violation? In such cases, an "if"
        statement would still be needed to check the actual cause.

    Hi John,

    Yes, that's true. You're welcome to log an enhancement request for
    this behavior.

    Regards,
    -Rick




Reply via email to