#!/usr/bin/env perl use Exception::Class ( 'MyException' ); sub divbyz { my $z = 0; eval { my $result = ( 23 / $z ) } or MyException->throw( error => 'I feel funny.' ); } sub writeit { eval { open my $FH, ">unwritable_file" } or MyException->throw( error => 'I feel bad.' ); } or MyException->throw( error => 'I feel bad.' ); # try eval { #divbyz(); writeit(); }; # my $e; # catch if ( my $e = Exception::Class->caught('MyException') ) { warn $e->error, "\n", $e->trace->as_string, "\n"; exit; } else { print "finally \n"; $e = Exception::Class->caught(); ref $e ? $e->rethrow : die $e; } #### divbyz(); writeit();