Return-Path: Delivered-To: apmail-commons-issues-archive@minotaur.apache.org Received: (qmail 24679 invoked from network); 9 Aug 2009 13:46:33 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 9 Aug 2009 13:46:33 -0000 Received: (qmail 14406 invoked by uid 500); 9 Aug 2009 13:46:39 -0000 Delivered-To: apmail-commons-issues-archive@commons.apache.org Received: (qmail 14282 invoked by uid 500); 9 Aug 2009 13:46:39 -0000 Mailing-List: contact issues-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: issues@commons.apache.org Delivered-To: mailing list issues@commons.apache.org Received: (qmail 14272 invoked by uid 99); 9 Aug 2009 13:46:39 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 09 Aug 2009 13:46:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 09 Aug 2009 13:46:35 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id DBB9129A0012 for ; Sun, 9 Aug 2009 06:46:14 -0700 (PDT) Message-ID: <1932350172.1249825574899.JavaMail.jira@brutus> Date: Sun, 9 Aug 2009 06:46:14 -0700 (PDT) From: "Derek C. Ashmore (JIRA)" To: issues@commons.apache.org Subject: [jira] Issue Comment Edited: (LANG-497) Addition of ContextedException and ContextedRuntimeException In-Reply-To: <748207102.1240652010305.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/LANG-497?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741079#action_12741079 ] Derek C. Ashmore edited comment on LANG-497 at 8/9/09 6:45 AM: --------------------------------------------------------------- Thanks for the feedback and discussion. Weather your writing an application or publishing an API, I'd recommend extending either ContextedException or ContextedRuntimeException as a first step and not throw these exceptions directly. Down the road, you may need additional features, beyond what's provided in these exceptions, and the extension would allow to add those features to your application or API easily at a later date. If you throw these exceptions directly, you loose that flexibility. Like Joerg, I'm also confused by the intended purpose of the ContextedExceptionUtils. Are you seeking to make it easier for people to write custom Contexted exceptions but not have to extend ContextedException to get the benefit? was (Author: dashmore): Thanks for the feedback and discussion. Weather your writing an application or publishing an API, I'd recommend extending either ContextedException or ContextedRuntimeException as a first step and not throw these exceptions directly. Down the road, you may need additional features, beyond what's provided in these exceptions, and the extension would allow to add those features to your application or API easily at a later date. If you throw these exceptions directly, you loose that flexibility. Like Joerg, I'm also confused by the intended purpose of the ContextedExceptionUtils. Are you seeking to make it easier for people to write custom Contexted exceptions but have to extend ContextedException to get the benefit? > 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.