Uploaded image for project: 'Commons Lang'
  1. Commons Lang
  2. LANG-497

Addition of ContextedException and ContextedRuntimeException

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 3.0
    • lang.exception.*
    • None

    Description

      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.

      Attachments

        1. ExceptionContext.java
          3 kB
          Derek C. Ashmore
        2. DefaultExceptionContextTest.java
          4 kB
          Derek C. Ashmore
        3. DefaultExceptionContext.java
          5 kB
          Derek C. Ashmore
        4. ContextedRuntimeExceptionTest.java
          7 kB
          Derek C. Ashmore
        5. ContextedRuntimeException.java
          5 kB
          Derek C. Ashmore
        6. ContextedExceptionTest.java
          6 kB
          Derek C. Ashmore
        7. ContextedException.java
          7 kB
          Derek C. Ashmore

        Issue Links

          Activity

            People

              Unassigned Unassigned
              dashmore Derek C. Ashmore
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: