Re: Exceptions . . .

From: Mike Kienenberger (mkienen..mail.com)
Date: Fri Aug 03 2007 - 11:58:33 EDT

  • Next message: Kevin Menard: "RE: Exceptions . . ."

    In my opinion, it's best to trap the error as soon as possible. As
    far as I remember, that's our standard practice, and as we come across
    items like this, we correct them.

    On 8/3/07, Kevin Menard <kmenar..ervprise.com> wrote:
    > I know this has come up before and some debate goes on and then no
    > decision is really made. Do we want to improve exception reporting?
    >
    > I've always found this to be a weak point in Cayenne's game.
    > Fortunately, I've become more comfortable with loading up the source
    > code and stepping through things to see what's wrong, but it's normally
    > debugging time that could largely be saved. The root problem, I think,
    > is that where a failure actually occurs and where a failure are
    > introduced are normally far apart.
    >
    > As a minimal example, I tried to create likeIgnoreCaseExp(), but passed
    > in null for the value. I received the following NPE:
    >
    > Caused by: java.lang.NullPointerException
    > at
    > org.apache.cayenne.exp.parser.SimpleNode.connectChildren(SimpleNode.java
    > :276)
    > at
    > org.apache.cayenne.exp.parser.ASTLikeIgnoreCase.<init>(ASTLikeIgnoreCase
    > .java:43)
    > at
    > org.apache.cayenne.exp.ExpressionFactory.likeIgnoreCaseExp(ExpressionFac
    > tory.java:529)
    > at
    > com.servprise.www.pages.store.CheckOut.addCoupon(CheckOut.java:291)
    > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    > at
    > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
    > a:39)
    > at
    > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
    > Impl.java:25)
    > at java.lang.reflect.Method.invoke(Method.java:597)
    > at
    > org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeTargetMetho
    > d(ListenerMethodInvokerImpl.java:214)
    > at
    > org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListenerMet
    > hod(ListenerMethodInvokerImpl.java:155)
    > ... 51 more
    >
    > Now, had I not had the source loaded in Eclipse already, it would have
    > been awfully difficult to track down. Tapestry loading on its own
    > exception stuff doesn't help much.
    >
    > On the other hand, if an IllegalArgumentException had been thrown in
    > likeIgnoreCaseExp indicating that value must not be null, my debugging
    > time would have been cut down considerably. I have run across many
    > similar situations in the past couple years.
    >
    > If anyone has any thoughts on the matter, please chime in. It is
    > something I would like to see move forward with the 3.0 release.
    >
    > --
    > Kevin Menard
    > Servprise International, Inc.
    > 800.832.3823 x308
    >



    This archive was generated by hypermail 2.0.0 : Fri Aug 03 2007 - 11:59:00 EDT