[
https://issues.apache.org/jira/browse/LANG-497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Joerg Schaible resolved LANG-497.
---------------------------------
Resolution: Fixed
I've committed this now (802566 & 802566). However, I changes one detail: The
two exceptions implement now ExceptionContext. This allows to write
{code:java}
...
} catch(RuntimeException e) {
if (e instanceof ExceptionContext) {
// do/add something
}
}
...
{code}
This also targets Matt's method in the ExceptionUtils. I've also added the
EMPTY_CONTEXT to the ExceptionUtils.
> Addition of ContextedException and ContextedRuntimeException
> ------------------------------------------------------------
>
> Key: LANG-497
> URL: https://issues.apache.org/jira/browse/LANG-497
> Project: Commons Lang
> Issue Type: New Feature
> Reporter: Derek C. Ashmore
> Fix For: 3.0
>
> Attachments: ContextedException.java, ContextedExceptionTest.java,
> ContextedRuntimeException.java, ContextedRuntimeExceptionTest.java,
> DefaultExceptionContext.java, DefaultExceptionContextTest.java,
> ExceptionContext.java
>
>
> This is a proposal for a feature addition.
> These additional exceptions (checked and unchecked versions) provide an
> easier and safer
> way for developers to provide context when generating checked exceptions.
> Often,
> additional information, besides what's embedded in the exception cause, is
> needed
> for developers to debug and correct a bug. Often, this additional
> information can
> reduce the time it takes to replicate and fix a bug.
> ContextedException are easier as developers don't need to be concerned
> with formatting the exception message to include additional information
> with the exception. Additional information is automatically included
> in the message and printed stack trace. This often thins out exception
> handling code.
> ContextedException is safer as the additional code needed to embed additional
> information in a normal exception tends to be tested less and is more
> vulnerable
> to errors such as null pointer exceptions.
> An unchecked version of this exception is provided by
> ContextedRuntimeException.
> To use this class write code as follows:
>
> try {
> ...
> } catch (Throwable e) {
> throw new ContextedException("Error posting account transaction", e)
> .addLabeledValue("accountNumber", accountNumber)
> .addLabeledValue("amountPosted", amountPosted)
> .addLabeledValue("previousBalance", previousBalance)
> }
> }
> The value of the context information is automatically included in the
> exception message and
> when the stack trace is printed in the log.
> My motivation for contributing is that I've previous versions of this running
> at four clients now -- I'm tiered of copying this from client to client.
> I've attached the two exceptions themselves along with working test cases.
> Every effort has been made
> to adhere to your existing style, conventions, and standards. No changes are
> needed for any
> existing files.
> I ran the site generation -- These additions pass your checkstyle reports.
> To streamline the committers time, I'll be happy to make any needed changes
> to to get this
> into 3.0.
> I know you're busy -- thanks for taking the time to at least review this
> proposal.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.