I am using Catalyst::View::Mason and enjoy it - but I have noticed one
flaw, if DBIx::Class throws an exception in one of my Mason components,
the error won't be caught by Catalyst's standard stuff (wrapping in
boxes and with extra info in debug mode, sending email or whatever I
have configured in production mode).

Instead the exception is displayed directly to the user in the browser.

The reason is this logic in Catalyst::View::Mason::process():

    if (blessed($output) && $output->isa('HTML::Mason::Exception')) {
      ... do $c->error ...
    }
    ...

    $c->response->body($output);

    return 1;

The problem is that when DBIx::Class dies, $output is an object, but of
type DBIx::Class::Exception - so the error path isn't taken.

One way to work around this, is to check on ref($output)=~/Exception/,
but there might be a better way.

Any ideas?


  Best regards,

    Adam

-- 
                                                          Adam Sjøgren
                                                    a...@novozymes.com

_______________________________________________
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/

Reply via email to