[Catalyst] RFC Catalyst::Plugin::ErrorOut

apv apv at sedition.com
Sat Jul 14 00:26:03 GMT 2007


I generally love the way Catalyst handles errors but often I'd prefer  
my first die or C::Exception to just shut everything down instead of  
trundling along trying, maybe expensively, to do more which is  
already destined for failure.

Is this something others might like to use? Name preference if it's  
ending up on the CPAN? Other ideas? I have not written any test code  
yet so I'm not even positive it would work the way I want, but I  
think so.

Demo doc:

   use Catalyst qw/
                  Your
                  Real
                  Plugins
                  ErrorOut
                 /;

   sub item_at_front_of_long_chain : PathPart("whatever") : Chained 
("/") : CaptureArgs(1) {
       my ( $self, $c, $something ) = @_;
       # ...
       if ( $something eq $is_wrong )
       {
           $c->error_out("Really, really, really die");
       }
   }

Then in Catalyst::Plugin::ErrorOut, something like this:

   sub error_out {
       my ( $c, $msg ) = @_;
       eval {
         Catalyst::Exception->throw("RC_$status_code: manually thrown  
error for testing");
         die "Catalyst::Exception->throw failed to cause exception";
       };
       $c->error($@);
       $c->detach();
   }


–Ashley
-- 






More information about the Catalyst mailing list