> >>
> Hi devs,
> >> >
> >> > Right now our strategy is for script services and script APIs in
general
> >> > to catch exceptions, store them and offer a getLastError() method to
get
> >> > them (see
> >> >
http://extensions.xwiki.org/xwiki/bin/view/Extension/Script+Module#HBestPra…
> >> > )
> >> >
> >> > However it would be much nicer to:
> >> > * Let our script services generate exceptions
> >> > * Offer a velocity script service to get the last exception raised by
a
> >> > java call from velocity
> >> > * Implement this uberspector to catch the exceptions and to set them
in
> >> > the execution context
> >> >
> >> > That should be quite easy to implement IMO.
> >> >
> >> > WDYT?
> >> >
> >>
> >> +1, it's a pain to call setLastError() everywhere there can be an
exception
> >> thrown, and we almost always forget to do it (for this reason).
> >>
> >> Note that we also have the #try() directive now.
> >
> > Yes, I should have mentioned that there’s indeed also this possibility:
> > * Have script API throw Exceptions
> > * Force velocity script users to wrap their code with the try directive when
they need to catch exceptions
> >
> > I still believe that the use of the Exception-catching uberspector is better.
> >
> > WDYT?
>
> Does it mean you plan to get rid of new #try directive ? Because it
> will be broken with this new uberspector.
That’s a good point, I had not thought about the implementation at this stage.
I think this could still work. When the #try directive is used I’d just have to setup
some flag somewhere in Velocity and in the uberspector I could check if this flag is set
and if so then don’t catch the exception.
Actually, thinking more, I think you’re right and that the #try directive plays exactly
the same role as an Exception-catching uberspector and I don’t see the need for the #try
directive if we provide an uberspector.
So I’m proposing to deprecate it but still keep it for backward compatibility for now
(probably a full cycle).
WDYT?