SYNOPSIS

  use Params::CallbackRequest::Exceptions;
  Params::Callback::Exception::Execution->throw("Whoops!");

  use Params::CallbackRequest::Exceptions abbr => [qw(throw_cb_exec)];
  throw_cb_exec "Whoops!";

DESCRIPTION

This module creates the exceptions used by Params::CallbackRequest and Params::Callback. The exceptions are subclasses of Exception::Class::Base, created by the interface defined by Exception::Class.

INTERFACE

Exported Functions

This module exports two functions by default.

\*(C`isa_cb_exception\*(C'

eval { something_that_dies() }; if (my $err = $@) { if (isa_cb_exception($err, 'Abort')) { print "All hands abandon ship!"; } elsif (isa_cb_exception($err)) { print "I recall an exceptional fault."; } else { print "No clue."; } }

This function takes a single argument and returns true if it's a Params::Callback::Exception object. A second, optional argument can be used to identify a particular subclass of Params::Callback::Exception.

\*(C`rethrow_exception\*(C'

eval { something_that_dies() }; if (my $err = $@) { # Do something intelligent, and then... rethrow_exception($err); }

This function takes an exception as its sole argument and rethrows it. If the argument is an object that \*(C`can('throw')\*(C', such as any subclass of Exception::Class, then \*(C`rethrow_exception()\*(C' will call its rethrow method. If not, but the argument is a reference, \*(C`rethrow_exception()\*(C' will simply die with it. And finally, if the argument is not a reference at all, \*(C`rethrow_exception()\*(C' will throw a new Params::Callback::Exception exception with the argument used as the exception error message.

Abbreviated Exception Functions

Each of the exception classes created by Params::CallbackRequest::Exceptions has a functional alias for its throw class method. These may be imported by passing an array reference of the names of the abbreviated functions to import via the \*(C`abbr\*(C' parameter:

use Params::CallbackRequest::Exceptions abbr => [qw(throw_cb_exec)];

The names of the abbreviated functions are:

throw_cb

Params::Callback::Exception

throw_bad_key

Params::Callback::Exception::InvalidKey

throw_cb_exec

Params::Callback::Exception::Execution

throw_bad_params

Params::Callback::Exception::Params

throw_abort

Params::Callback::Exception::Abort

Exception Classes

The exception classes created by Params::Callback::Exception are as follows:

Params::Callback::Exception

This is the base class for all Params::Callback exception classes. Its functional alias is \*(C`throw_cb\*(C'.

Params::Callback::Exception::InvalidKey

Params::CallbackRequest throws this exception when a callback key in the parameter hash passed to \*(C`new()\*(C' has no corresponding callback. In addition to the attributes offered by Exception::Class::Base, this class also features the attribute \*(C`callback_key\*(C'. Use the \*(C`callback_key()\*(C' accessor to see what callback key triggered the exception. Params::Callback::Exception::InvalidKey's functional alias is \*(C`throw_bad_key\*(C'.

Params::Callback::Exception::Execution

This is the exception thrown by Params::CallbackRequest's default exception handler when a callback subroutine or method dies. In addition to the attributes offered by Exception::Class::Base, this class also features the attributes \*(C`callback_key\*(C', which corresponds to the parameter key that triggered the callback, and \*(C`callback_error\*(C' which is the error thrown by the callback subroutine or method. Params::Callback::Exception::Execution's functional alias is \*(C`throw_cb_exec\*(C'.

Params::Callback::Exception::Params

This is the exception thrown when an invalid parameter is passed to Params::CallbackRequest's or Params::Callback's \*(C`new()\*(C' constructors. Its functional alias is \*(C`throw_bad_params\*(C'.

Params::Callback::Exception::Abort

This is the exception thrown by Params::Callback's \*(C`abort()\*(C' method. functional alias is \*(C`throw_cb\*(C'. In addition to the attributes offered by Exception::Class::Base, this class also features the attribute \*(C`aborted_value\*(C' attribute. Use the \*(C`aborted_value()\*(C' accessor to see what value was passed to \*(C`abort()\*(C'. Params::Callback::Exception::Abort's functional alias is \*(C`throw_abort\*(C'.

RELATED TO Params::CallbackRequest::Exceptions…

Params::Callback is the base class for all callback classes.

Params::CallbackRequest sets up callbacks for execution.

Exception::Class defines the interface for the exception classes created here.

SUPPORT

This module is stored in an open GitHub repository <http://github.com/theory/params-callbackrequest/>. Feel free to fork and contribute!

Please file bug reports via GitHub Issues <http://github.com/theory/params-callbackrequest/issues/> or by sending mail to [email protected] <mailto:[email protected]>.

AUTHOR

David E. Wheeler <[email protected]>

COPYRIGHT AND LICENSE

Copyright 2003-2011 David E. Wheeler. Some Rights Reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.