+1
I don't think there's any disagreement on that.
Andrus
On Aug 3, 2007, at 6:58 PM, Mike Kienenberger wrote:
> 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.invokeTargetMe
>> tho
>> d(ListenerMethodInvokerImpl.java:214)
>> at
>> org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListener
>> Met
>> 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 - 12:06:28 EDT