NAME

App::CamelPKI::Error - Camel-PKI Error management

SYNOPSIS

use App::CamelPKI::Error;

try {
    throw App::CamelPKI::Error::Internal("WRONG_NUMBER_ARGS");
} catch App::CamelPKI::Error with {
    warn "Oops, I made a boo-boo!";
};
package My::Facet;
use Class::Facet from => "My::Object",
                 on_error => \&App::CamelPKI::Error::Privilege::on_facet_error;

DESCRIPTION

This class leverages the Error module, by the excellent Graham Barr and his buddies, to implement error management in Camel-PKI.

Unlike Error, try, with, finally, except and otherwise symbols are exported by default: no need to say use Error qw(:try); to import these.

App::CamelPKI::Error::Internal

Thrown when a programing issue occurs (for example when not respecting the documented API, using a bad number of arguments, ...).

App::CamelPKI::Error::IO

Thrown when a file issue occurs. The incriminated file name must be passed as the parameter -IOfile, for example.

throw App::CamelPKI::Error::IO("cannot open file",
                          -IOfile => $file);

The ->{-errorcode} field will be automatically set with the numerical value of $! (see "perlvar") when the error is thrown. The ->{-error} field will be automatically set whith the textual value of this same variable; note that this value depends on the active locale and therefore should not be tested by error catching code.

App::CamelPKI::Error::Privilege

Thrown each time the owner of a facet, another object or a class with restricted privileges, try to exceeds those which were granted to it. To this effect, the App::CamelPKI::Error::Privilege also defines a on_facet_error function that can be installed as a Class::Facet error handler, as shown in "SYNOPSIS".

App::CamelPKI::Error::Database

Thrown when an Camel-PKI database (typically App::CamelPKI::CADB) detects an error at the SQL level, as an invariant violation tentative or an insert of two values for an unique index.

App::CamelPKI::Error::State

Thrown when a Camel-PKI object or class is in a state which cannot be handled correctly (for example, private key and certificate already present on disk for a non corresponding service), or an asked operation which is no yet or anymore possible to perform (for example when App::CamelPKI::CA ask for a certificate generation when the AC key and certificate are not regulated).

App::CamelPKI::Error::OtherProcess

Thrown in case of an error in the communication with an external process (for example failling to start an instance of App::CamelPKI::SysV::Apache).

App::CamelPKI::Error::User

Thrown when a Camel-PKI mecanism detects an error caused by a bad user action (or a bad usage in a web service client).