X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FException%2FInterface.pm;h=5f0dbd1b0889e5cd39b51e7d4e57f1893924fe6a;hp=1bd603a88124f0758296b61b8f9e5c4fc990f43c;hb=59b3e4d0df63749ee601113ce44be5b4340be2a8;hpb=ede5238fd84cf5c03515d8b51792613a61c78f60 diff --git a/lib/Catalyst/Exception/Interface.pm b/lib/Catalyst/Exception/Interface.pm index 1bd603a..5f0dbd1 100644 --- a/lib/Catalyst/Exception/Interface.pm +++ b/lib/Catalyst/Exception/Interface.pm @@ -1,8 +1,74 @@ package Catalyst::Exception::Interface; use Moose::Role; -use namespace::autoclean; +use namespace::clean -except => 'meta'; + +use overload + q{""} => sub { $_[0]->as_string }, + fallback => 1; requires qw/as_string throw rethrow/; 1; + +__END__ + +=head1 NAME + +Catalyst::Exception::Interface - Role defining the interface for Catalyst exceptions + +=head1 SYNOPSIS + + package My::Catalyst::Like::Exception; + use Moose; + use namespace::clean -except => 'meta'; + + with 'Catalyst::Exception::Interface'; + + # This comprises the required interface. + sub as_string { 'the exception text for stringification' } + sub throw { shift; die @_ } + sub rethrow { shift; die @_ } + +=head1 DESCRIPTION + +This is a role for the required interface for Catalyst exceptions. + +It ensures that all exceptions follow the expected interface, +and adds overloading for stringification when composed onto a +class. + +=head1 REQUIRED METHODS + +=head2 as_string + +=head2 throw + +=head2 rethrow + +=head1 METHODS + +=head2 meta + +Provided by Moose + +=head1 SEE ALSO + +=over 4 + +=item L + +=item L + +=back + +=head1 AUTHORS + +Catalyst Contributors, see Catalyst.pm + +=head1 COPYRIGHT + +This library is free software. You can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut