Exception::Base->throw( message => ['Failed in %s', __PACKAGE__] );
eval { Exception::Base->throw( message => "foo" ) }; if ($@) { my $e = Exception::Base->catch; given ($e) { when ({ message => "foo" }) { warn "has a foo message"; } when ("Exception::Base") { warn "is an Exception::Base"; } } }
package Exception::My; use Exception::Base (__PACKAGE__) => 'has' => 'myattr', };
use Exception::Base 'Exception::WithReason' => 'has' => 'reason', stringify_attributes => ['message', 'reason'], }; eval { Exception::WithReason->( message => "My message", reason => "My reason", ); print $@->stringify; # "My message: My reason"
use Exception::Base 'Exception::WithDefaultValue' => 'has' => 'value', 'value' => 'Default value', };
Minor changes:
Fixed error: