commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oliver Heger (JIRA)" <>
Subject [jira] Created: (LANG-499) Add support for the handling of ExecutionExceptions
Date Tue, 28 Apr 2009 19:48:32 GMT
Add support for the handling of ExecutionExceptions

                 Key: LANG-499
             Project: Commons Lang
          Issue Type: New Feature
    Affects Versions: 2.4
            Reporter: Oliver Heger
            Priority: Minor

Exceptions of the checked type {{ExecutionException}} are thrown by the Java 1.5 task execution
framework if the execution of a task fails. Dealing with these exceptions is somewhat cumbersome
as they wrap all kinds of possible error conditions: checked exceptions, runtime exceptions,
and errors as well. Therefore in _Java Concurrency in Practice_ (JCIP) the following approach
is suggested:

* First inspect the root cause of the exception and check whether it is one of the possible
checked exceptions. If this is the case, re-throw the checked exception (after a type cast).
* After that call the utility method {{launderThrowable()}}. {{launderThrowable()}} deals
with errors and runtime exceptions and throws them accordingly.

This approach ensures that all possible exception types are correctly extracted from an {{ExecutionException}}
and passed to the caller.

This ticket is about adding support for this exception extraction process to _Commons Lang_.

With regards to checked exceptions, there is probably nothing we can do to simplify exception
handling as Java does not allow throwing arbitrary checked exceptions from a method. However,
we could at least add a method like {{launderThrowable()}} to an utility class (e.g. {{ConcurrentUtils}},
which could provide other functionality related to the _concurrent_ package as well).

We could also go a step further and define a custom Exception class, say {{ConcurrentException}},
which plays a similar role as {{ExecutionException}}, but is guaranteed to wrap only a checked
exception. An utility method converting {{ExecutionException}} to {{ConcurrentException}}
would - like {{launderThrowable()}} - check for runtime exceptions and errors and handle them
directly. All other exceptions are wrapped in a {{ConcurrentException}}. In cases where no
checked exceptions are needed or desired, also a runtime version ({{ConcurrentRuntimeException}})
could be provided.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message