Peter Flanigan > Unexpected > Unexpected::Functions

Download:
unexpected/Unexpected-0.36.1.tar.gz

Dependencies

Annotate this POD

Website

CPAN RT

Open  0
View/Report Bugs
Module Version: v0.36.1   Source  

Name ^

Unexpected::Functions - A collection of functions used in this distribution

Synopsis ^

   package YourApp::Exception;

   use Moo;

   extends 'Unexpected';
   with    'Unexpected::TraitFor::ExceptionClasses';

   package YourApp;

   use Unexpected::Functions 'Unspecified';

   sub EXCEPTION_CLASS { 'YourApp::Exception' }

   sub throw { EXCEPTION_CLASS->throw( @_ ) }

   throw Unspecified, args => [ 'parameter name' ];

Description ^

A collection of functions used in this distribution

Also exports any exceptions defined by the caller's EXCEPTION_CLASS as subroutines that return a subroutine that returns the subroutines name as a string. The calling package can then throw exceptions with a class attribute that takes these subroutines return values

Configuration and Environment ^

Defines no attributes

Subroutines/Methods ^

build_attr_from

   $hash_ref = build_attr_from( <whatever> );

Coerces a hash ref from whatever args are passed. This function is responsible for parsing the arguments passed to the constructor. Supports the following signatures

   # no defined arguments - returns and empty hash reference
   Unexpected->new();

   # first argument is one if our own objects - clone it
   Unexpected->new( $unexpected_object_ref );

   # first argument is one if our own objects, second is a hash reference
   # - clone the object but mutate it using the hash reference
   Unexpected->new( $unexpected_object_ref, { key => 'value', ... } );

   # first argument is a code reference - the code reference returns the
   # exception class and the remaining arguents are treated as a list of
   # keys and values
   Unexpected->new( Unspecified, args => [ 'parameter name' ] );
   Unexpected->new( Unspecified, [ 'parameter name' ] ); # Shortcut

   # first argmentt is a hash reference - clone it
   Unexpected->new( { key => 'value', ... } );

   # only one scalar argement - the error string
   Unexpected->new( $error_string );

   # second argement is a hash reference, first argument is the error
   Unexpected->new( $error_string, { key => 'value', ... } );

   # odd numbered list of arguments is the error followed by keys and values
   Unexpected->new( $error_string, key => 'value', ... );
   Unexecpted->new( 'File [_1] not found', args => [ $filename ] );
   Unexecpted->new( 'File [_1] not found', [ $filename ] ); # Shortcut

   arguments are a list of keys and values
   Unexpected->new( key => 'value', ... );

catch_class

   use Try::Tiny;

   try         { die $exception_object }
   catch_class [ 'exception_class' => sub { # handle exception }, ... ],
   finally     { # always do this };

See Try::Tiny::ByClass. Checks the exception object's class attribute against the list of exception class names passed to catch_class. If there is a match, call the subroutine provided to handle that exception. Re-throws the exception if there is no match or if the exception object has no class attribute

exception;

   $exception_object_ref = exception $optional_error;

A function which calls the caught class method

has_exception

   has_exception 'exception_name' => parents => [ 'parent_exception' ],
      error => 'Error message for the exception with placeholders';

A function which calls "add_exception" in Unexpected::TraitFor::ExceptionClasses via the calling class which is assumed to inherit from a class that consumes the Unexpected::TraitFor::ExceptionClasses role

inflate_message

   $message = inflate_message( $template, $arg1, $arg2, ... );

Substitute the placeholders in the $template string (e.g. [_1]) with the corresponding argument

is_class_loaded

   $bool = is_class_loaded $classname;

Returns true is the classname as already loaded and compiled

is_one_of_us

   $bool = is_one_of_us $string_or_exception_object_ref;

Function which detects instances of this exception class

quote_bind_values

   $bool = Unexpected::Functions->quote_bind_values( $bool );

Accessor / mutator class method that toggles the state on quoting the placeholder substitution values in inflate_message. Defaults to true

throw

   throw 'Path [_1] not found', args => [ 'pathname' ];

A function which calls the throw class method

throw_on_error

   throw_on_error @optional_args;

A function which calls the throw_on_error class method

Diagnostics ^

None

Dependencies ^

Exporter::Tiny
Package::Stash
Sub::Install

Incompatibilities ^

There are no known incompatibilities in this module

Bugs and Limitations ^

There are no known bugs in this module. Please report problems to the address below. Patches are welcome

Acknowledgements ^

Larry Wall - For the Perl programming language

Author ^

Peter Flanigan, <pjfl@cpan.org>

License and Copyright ^

Copyright (c) 2014 Peter Flanigan. All rights reserved

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

This program is distributed in the hope that it will be useful, but WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE

syntax highlighting: