John Deighan wrote:

> I need to be able to jump to the end of the enclosing eval block, just like 
> a die() does, but without setting [EMAIL PROTECTED] Is there a way to do 
> that? (I've 
> checked the Perl docs, but couldn't find it). I could possibly die() with a 
> specific string, then use "if ($@ && ($@ ne <string>))" as the error trap, 
> but that's aesthetically unpleasing.

There are lots of possibilites, why not just set a global vrbl (or at
least one that has scope) indicating the type of error to handle at
the end of the eval block:

my $user_err = 0;
eval {
        ...
        $user_err = 1;
        die ...
};
if ($@) {
        if ($user_err) {
                ... # user error
        } else {
                ... # real error
        }
}

> If you're interested in why, here's the explanation. Our web site is 
> implemented via a series of "opcodes". The opcode is passed in the URL. 
> There is a goto in our main script that dispatches to a particular opcode, 
> and the code implementing the opcodes is surrounded by an eval block. When 
> the output is generated, it's generated via a call to a library that 
> outputs a page - usually using a template file. There is, however, also a 
> function called errorPage() to which you pass a string. Now, when 
> errorPage() is called, there has to be no further HTTP output, so I'd 
> prefer, at the end of the errorPage() routine, to pass directly to the end 
> of the eval block in the main code. die() does just that, but after the 
> eval block, there's a "if ($@)" that handles any real errors, like database 
> connection errors, direct calls to die(), etc., and I don't want calls to 
> errorPage() to be treated like true errors (they're "user errors", which 
> just means that we want to display a page to the user informing them of 
> their error and how to correct it, and errorPage() does just that. Real 
> errors result in us receiving an e-mail with the error message, and the 
> error being logged to a database table). 



-- 
  ,-/-  __      _  _         $Bill Luebkert    Mailto:[EMAIL PROTECTED]
 (_/   /  )    // //       DBE Collectibles    Mailto:[EMAIL PROTECTED]
  / ) /--<  o // //      Castle of Medieval Myth & Magic http://www.todbe.com/
-/-' /___/_<_</_</_    http://dbecoll.tripod.com/ (My Perl/Lakers stuff)
_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to