Mark Ellis > Exception-Simple-1.000001 > Exception::Simple

Download:
Exception-Simple-1.000001.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 1.000001   Source  

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 ^

Try::Tiny aliased

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.

syntax highlighting: