+1 strangely :)

On Thu, Sep 18, 2014 at 3:28 PM, [email protected] <[email protected]> wrote:
> Hi Devs,
>
> Example of a use case:
>
> * In contentview.vm we need to be able to catch when getRenderedContent() 
> throws an exception in order to be able to still display the page title, 
> content menu and last modification line. We want only the content part to 
> display an error.
>
> I’ve tried implementing the following:
> * Modified Document.getRenderedContent() to not throw exceptions any more
> * I’ve added Document.setError() and getError()
> * Then added a #displayRenderedContent($renderedContent) velocimacro to 
> display an error, calling Document.getError()
>
> However that’s no good because we have lots of places in our code (and in 
> extensions we don’t control) that call getRenderedContent() and they expect 
> the whole page rendering to fail in case of an error…
>
> Thus after discussing quickly on IRC and with Thomas we’d like to propose 
> instead:
>
> * Add a new #try() velocimacro that would push a new empty List<Exception> in 
> the Execution Context to a Stack variable
> * Add a new uberspector that would, based on this flag do a try/catch around 
> the method called (can be done easily by returning a custom VelMethod)
> * The uberspector catch would add the exception to the List<Exception> in the 
> Execution Context
> * Add a new #catch() velocimacro that would pop from the Stack in the 
> Execution Context and that would set 2 variables in the Velocity Context:
> ** $exception: the first exception
> ** $exceptions: the list of all exceptions that happened between the #try() 
> and #catch()
>
> The good part with this is:
> * No change in behavior to all existing code
> * Code that want to do something in case of error can do it using 
> #try()/#catch() for java methods throwing exceptions (like 
> getRenderedContent())
>
> Of course for the future we would need to decide if script services should 
> stop doing try/catch or not but that’s another debate I’d prefer to separate 
> from this thread.
>
> WDYT?
>
> Thanks
> -Vincent
>
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs



-- 
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to