>
> Ideally I would display through the existing view URL but switch page
> templates so the user can just hit refresh to try again.
>
This is simple.  Might want to look at the BrowserView source and see how it
is called.  Basically, the __call__ method is used to render the page.  So
in there you can do something like,

> def __call__(self):
>
    try:
>
        #do something
>
        return self.template1()
>
    except:
>
        return self.template2()
>
Something like that....

Also note that default_error_message.pt handlers various errors.  You could
throw a custom Exception and handler it your own way in that template.

IMO, a redirect isn't bad either.  You could then create a more concise
error handler.

-Nathan

On Thu, Dec 11, 2008 at 9:49 PM, Nigel Sim <[email protected]> wrote:

> Hi,
> I am trying to formulate a way of doing custom error handling (as opposed
> to the 'We encountered an error' page), so when I catch an exception I can
> provide a more meaningful response to the user. For instance, within some of
> my BrowserView __init__ or adapters, I call external services which may or
> may not be available. If they are not, currently I throw an exception which
> results in a generic error page.
>
> Ideally I would display through the existing view URL but switch page
> templates so the user can just hit refresh to try again. The other, less
> desirable approach would be to self.request.response.redirect to a common
> error page, and perhaps record the source page so they can click back, like
> the way the login form works.
>
> Does anybody have any throughs on this issue?
>
> Cheers
> nigel
> _______________________________________________
> Product-Developers mailing list
> [email protected]
> http://lists.plone.org/mailman/listinfo/product-developers
>
>
_______________________________________________
Product-Developers mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/product-developers

Reply via email to