%PDF- %PDF-
Direktori : /usr/share/perl5/vendor_perl/ |
Current File : //usr/share/perl5/vendor_perl/Throwable.pm |
package Throwable; BEGIN { $Throwable::VERSION = '0.102080'; } use Moose::Role 0.87; # ABSTRACT: a role for classes that can be thrown has 'previous_exception' => ( is => 'ro', init_arg => undef, default => sub { return unless defined $@ and (ref $@ or length $@); return $@; }, ); sub throw { my ($inv) = shift; if (blessed $inv) { confess "throw called on Throwable object with arguments" if @_; die $inv; } my $throwable = $inv->new(@_); die $throwable; } no Moose::Role; 1; __END__ =pod =head1 NAME Throwable - a role for classes that can be thrown =head1 VERSION version 0.102080 =head1 SYNOPSIS package Redirect; use Moose; with 'Throwable'; has url => (is => 'ro'); ...then later... Redirect->throw({ url => $url }); =head1 DESCRIPTION Throwable is a role for classes that are meant to be thrown as exceptions to standard program flow. It is very simple and does only two things: saves any previous value for C<$@> and calls C<die $self>. =head1 ATTRIBUTES =head2 previous_exception This attribute is created automatically, and stores the value of C<$@> when the Throwable object is created. =head1 METHODS =head2 throw Something::Throwable->throw({ attr => $value }); This method will call new, passing all arguments along to new, and will then use the created object as the only argument to C<die>. If called on an object that does Throwable, the object will be rethrown. =head1 AUTHORS =over 4 =item * Ricardo SIGNES <rjbs@cpan.org> =item * Florian Ragwitz <rafl@debian.org> =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut