NAME
Exception::Simple - simple exception class
SYNOPSIS
use Exception::Simple;
use Try::Tiny; #or just use eval {}, it's all good
### throw ###
try{
Exception::Simple->throw( 'oh noes!' );
} catch {
warn $_; #"oh noes!"
warn $_->error; #"oh noes!"
};
my $data = {
'foo' => 'bar',
'fibble' => [qw/wibble bibble/],
};
try{
Exception::Simple->throw(
'error' => 'oh noes!',
'data' => $data,
);
} catch {
warn $_; #"oh noes!"
warn $_->error; #"oh noes!"
warn $_->data->{'foo'}; #"bar"
};
### throwc ###
try{
Exception::Simple->throwc( "Some::Fake::Exception::Class", 'oh noes!' );
} catch {
warn $_; #"oh noes!"
warn ref( $_ ); #"Some::Fake::Exception::Class"
warn $_->error; #"oh noes!"
};
my $data = {
'foo' => 'bar',
'fibble' => [qw/wibble bibble/],
};
try{
Exception::Simple->throwc(
'Some::Fake::Exception::Class',
'error' => 'oh noes!',
'data' => $data,
);
} catch {
warn $_; #"oh noes!"
warn ref( $_ ); #"Some::Fake::Exception::Class"
warn $_->error; #"oh noes!"
warn $_->data->{'foo'}; #"bar"
};
DESCRIPTION
pretty simple exception class. auto creates argument accessors. simple, lightweight and extensible are this modules goals.
METHODS
throw
with just one argument $@->error is set Exception::Simple->throw( 'error message' ); # $@ stringifies to $@->error
or set multiple arguments (creates accessors) Exception::Simple->throw( error => 'error message', data => 'cutom atrribute', ); # warn $@->data or something
throwc
Same as throw, except the first argument is a classname which will become the classname of the exception object.
Useful for throwing specific execptions without having to create lots of packages.
try{
Exception::Simple->throwc( "Some::Fake::Exception::Class", 'oh noes!' );
} catch {
warn ref( $_ ); #Some::Fake::Exception::Class
};
WARNING: using throwc with a real classname is unsupported i.e. throwc( "Data::Dumper", "derp" ) #you just made god kill a kitten
rethrow
say you catch an error, but then you want to uncatch it
use Try::Tiny;
try{
Exception:Simple->throw( 'foobar' );
} catch {
if ( $_ eq 'foobar' ){
#not our error, rethrow
$_->rethrow;
}
};
error
accessor for error, if its been set
SUPPORT
Bugs should always be submitted via the CPAN bug tracker
For other issues, contact the maintainer
AUTHOR
n0body <n0body@thisaintnews.com>
CONTRIBUTORS
Stephen Thirlwall
SEE ALSO
http://thisaintnews.com, Try::Tiny
LICENSE
Copyright (C) 2012 by n0body http://thisaintnews.com/
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.