[
https://issues.apache.org/jira/browse/LANG-497?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12702709#action_12702709
]
Derek C. Ashmore commented on LANG-497:
---------------------------------------
I like the idea of publishing an interface along with an implementation of it.
I also like the idea of providing the capability to retrieve the underlying
context name/value pairs as
somebody might want to do something with that information besides use it in the
error report.
Also, somebody might not like the reporting style provided in a particular
implementation -- this would
give developers freedom to supply their own style with a custom implementation.
I'm happy to do the work to factor out an interface and a supporting
implementation class. Could we call it
something else, though? As you describe ExceptionContext, it really could be
applied to other types
of objects. There is nothing in that interface that forces a developer to use
it for exception processing.
Having 'Exception' in the title really is a lie. May I suggest
'EmbeddedContext', or something like that?
> 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
>
>
> 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.