Exceptions . . .

From: Kevin Menard (kmenar..ervprise.com)
Date: Fri Aug 03 2007 - 11:51:54 EDT

  • Next message: Mike Kienenberger: "Re: Exceptions . . ."

    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:52:32 EDT