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