use Exception::Class::TryCatch; ... # try eval { $obj->some_method('foo') }; # catch if ( catch my $err ) { $err->isa('Bio::Phylo::Exceptions::BadNumber') and do { handle_this($err) }; $err->isa('Bio::Phylo::Exceptions::ObjectMismatch') and do { handle_that($err) }; }