in reply to Re: Trapping errors with specificity
in thread Trapping errors with specificity

For simplicity's sake, I vote for hardcoding.

Hardcoding is hard.

eval { #line 1 SpecialZone1 $code_ref->(); }; #line 23 file.pl

You have to make sure "SpecialZone1" is unique.
You have to make sure "23" and "file.pl" are correct.

Replies are listed 'Best First'.
Re^3: Trapping errors with specificity
by diotalevi (Canon) on Aug 07, 2006 at 21:34 UTC

    When I know I'm writing inside AI/Prolog/Engine/Primitive.pm and this is the eval part of perlcall2/2 I can say the following and reasonably bet that I'll get only those things meant for me. I still have the problem that I need to reset my line number after exiting the eval. On consideration, this requires automation because it is difficult to get right by hand all the time. Manual maintenance of this would *SUCK*.

    eval { #line 1 "AI::Prolog primitive: perlcall2/2" ... }; #line ??? "Primitive.pm" if ( my $e = $@ ) { if ( $e =~ m{at AI::Prolog primitive: perlcall2/2} ) { Got it! } elsif ... }

    ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊