NAME
ETLp::Exception - ETLp Exception Class
SYNOPSIS
use MooseX::Declare
class My::ETL {
use ETLp::Exception;
use Try::Tiny
method do_stuff {
unless ($self->continue) {
ETLpException->throw(error => "Can't continue");
}
}
method call_do_stuff {
try {
do_stuff
} catch {
print "Error $_";
$_->rethrow;
}
}
}
DESCRIPTION
ETLP::Exception provides ETLpException, an Exception:Class object. Because it can be stringified, it can simply be printed or inserted into a database.
The exception can also be sub-classed if required:
class My::ETL::CSV {
use Exception::Class (
ETLpExceptionCSV => {
isa => 'ETLpException',
fields => [qw/error_code short_name/]
}
);
method load_csv (Str $filename) {
$self->insert_into_db($filename) || ETLpExceptionCSV->throw(
error => 'Unable to insert into DB:$!',
error_code => 29,
short_name => 'insertion error',
);
}
}
# In some different class
my $loader = My::ETL::CSV->new()
try {
$loader->load_csv
} catch {
my $error = $_;
$self->logger->error($error->error_code . ':' . $error->error);
$error->rethrow;
}
LICENSE AND COPYRIGHT
Copyright 2010 Redbone Systems Ltd
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
The terms are in the LICENSE file that accompanies this application