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"
};
DESCRIPTION
pretty simple exception class. auto creates argument accessors. simple, lightweight and extensible are this modules goals.
ALIAS
When using this module, you can specify a shortcut method, so you don't have to type the full module name each time.
This works by importing a sub with the name specified into the current namespace, that returns the package name so you need to make sure this sub does not already exist, or you'll get an error
e.g.
use Exception::Simple qw/E/;
use Try::Tiny; #or just use eval {}, it's all good
### throw ###
try{
E->throw( 'oh noes!' );
} catch {
warn ref $_; # Exception::Simple
warn $_; #"oh noes!"
warn $_->error; #"oh noes!"
};
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 => 'custom attribute', ); # warn $@->data or something
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 message (set if only 1 arg is passed to throw)
_package
package that threw the exception
_filename
filename of the code that threw the exception
_line
line number that threw the exception
CAVEATS
If you pass in package, filename or line, they will be overwritten with the caller information
If you don't pass in error, then you'll get an undef warning on stringify
SUPPORT
Please submit bugs through https://github.com/markwellis/exception-simple/issues
For other issues, contact the maintainer
AUTHOR
Mark Ellis <markellis@cpan.org>
CONTRIBUTORS
Stephen Thirlwall
SEE ALSO
LICENSE
Copyright 2014 Mark Ellis <markellis@cpan.org>
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.