[Catalyst] Re: Perl::Rails?
Brandon Black
blblack at gmail.com
Sat Dec 10 00:13:55 CET 2005
On 12/9/05, phaylon <phaylon at dunkelheit.at> wrote:
> Hi there,
>
> Brandon Black said:
> >
> > If my controller code uses a random CPAN module, and that module does
> > a "die 'foo';" somewhere inside itself, Catalyst says:
> >
> > [Fri Dec 9 15:37:06 2005] [catalyst] [error] Caught exception "foo at
> > /path/to/Module.pm line 345"
> >
> > But does not provide stack context for what part of my controller code
> > I was in when this error occured.
> >
>
> How about this one, it's kind of a hack (since I haven't asked a core
> developer how fixed error's behaviour is) but it is a start:
>
> use NEXT;
>
> sub error {
> my ( $c, @args ) = @_;
> if ( $args[0] and $args[0] =~ /^Caught exception/ ) {
> $args[0] = sprintf( 'Occured in /%s: ', $c->action )
> . $args[0];
> }
> return $c->NEXT::error( @args );
> }
>
> This gives me, if I place a "die 'Wooo';" in my App's login controller:
>
> [Fri Dec 9 23:21:46 2005] [catalyst] [error] Occured in /login/login:
> Caught exception "Wooo at /home/p/perl/CX-Pandora/script/../lib/CX/
> Pandora/Controller/Login.pm line 9."
>
>
That's a big improvement without the headaches of actual stack
tracing, nice work. I suspect there will be a little more to it than
that in the end, since $c->error() may get called in other
circumstances where $c->action isn't defined, and $c->action
information becomes redundant when the actual death was in the
controller code itself (and probably a host of other exceptional
things I can't think of).
-- Brandon
More information about the Catalyst
mailing list