db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DERBY-6493) Improve reporting of exceptions wrapped in InvocationTargetException
Date Tue, 04 Mar 2014 13:30:20 GMT

     [ https://issues.apache.org/jira/browse/DERBY-6493?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Knut Anders Hatlen updated DERBY-6493:
--------------------------------------

    Attachment: d6493-1a.diff

Attached is a patch (d6493-1a.diff) that makes StandardException.unexpectedUserException()
and StandardException.plainWrapException() unwrap InvocationTargetExceptions and PrivilegedActionExceptions
before reporting them. This change simplified the exception chain in the example above to:

{noformat}
ij> call syscs_util.syscs_import_table(null, 'T', null, null, null, null, 0);
ERROR XIE05: Data file cannot be null. 
{noformat}

Other changes in the patch:

- Remove unneeded unwrapping of InvocationTargetException in ReflectMethod and FromVTI since
that's now handled centrally in StandardException.
- Fix a test case in ImportExportProcedureTest where it was checked for the SQLState of the
InvocationTargetException (38000) instead of the error code for the underlying exception.

All the regression tests passed.

> Improve reporting of exceptions wrapped in InvocationTargetException
> --------------------------------------------------------------------
>
>                 Key: DERBY-6493
>                 URL: https://issues.apache.org/jira/browse/DERBY-6493
>             Project: Derby
>          Issue Type: Improvement
>          Components: JDBC
>    Affects Versions: 10.11.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: d6493-1a.diff
>
>
> When Derby encounters an exception in a method that's called via reflection, the actual
problem may be well hidden at the end of a long exception chain. For example:
> ij> create table t(x int);
> 0 rows inserted/updated/deleted
> ij> call syscs_util.syscs_import_table(null, 'T', null, null, null, null, 0);
> ERROR 38000: The exception 'java.sql.SQLException: The exception 'java.lang.reflect.InvocationTargetException'
was thrown while evaluating an expression.' was thrown while evaluating an expression.
> ERROR 38000: The exception 'java.lang.reflect.InvocationTargetException' was thrown while
evaluating an expression.
> ERROR XJ001: Java exception: ': java.lang.reflect.InvocationTargetException'.
> ERROR XIE05: Data file cannot be null. 
> Only the last exception provides any useful information to the user in this case. I think
it would be good to remove the InvocationTargetException from the chain so that it's easier
to spot the actual problem.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message