[Petal] Re: Handling/rethrowing errors in Petal
Jean-Michel Hiver
jhiver at mkdoc.com
Mon May 19 14:56:49 BST 2003
> Hi Jean-Michel,
Hi Mark,
> I have finally had some time to work on my petal-involving projects.
Good!
> Whilst converting one site over to petal I have come across a problem
> with my mason/petal set up that required me to hack out my own version.
> The problem is, as I chain mason components and petal objects together
> my mason-generated errors are not being propagated up the chain. Instead
> they are getting stringyfied by petal, meaning that what mason would
> usually treat only as a warning, is being treated as a fatal error.
>
> Quite simply, I need to be able to subclass petal and substitute in my
> own error handling at the end of the proccess routine.
>
> E.g. where petal currently does this:
>
> line 235:
> eval { $res = $coderef->($hash) };
> if (defined $@ and $@) { confess $@ . "\n===\n\n" .
> $self->_code_with_line_numbers }
> return $res;
>
> it could call its own 'handle_error' method:
>
> eval { $res = $coderef->($hash) };
> $self->handle_error($@);
>
> and in the subclass i would then be able say:
>
> sub handle_error {
> my $self = shift;
> my $err = shift;
>
> if (defined $err and $err) {
> if (isa_mason_exception($err)) {
> die $err;
> } else {
> confess $@ . "\n===\n\n" . $self->_code_with_line_numbers;
> }
> }
> }
>
> (isa_mason_exception is a imported routine which simply checks that $err
> belongs to the html::mason::exception class)
>
> Just a suggestion, perhaps there's a better way?
This looks good to me. I'll do that bit of refactoring and make a
release soon so that you can handle Mason errors correctly.
> Hope you're enjoying/enjoyed your holiday.
I just came back yesterday. It was brilliant! French polynesia is well
worth visiting, especially if like me you like scuba diving :).
Cheers,
--
Building a better web - http://www.mkdoc.com/
---------------------------------------------
Jean-Michel Hiver
hiver at mkdoc.com - +44 (0)114 255 8097
Homepage: http://www.webmatrix.net/
More information about the Petal
mailing list