NAME
Data::Object::Role::Errable
ABSTRACT
Errable Role for Perl 5
SYNOPSIS
package Example;
use Moo;
with 'Data::Object::Role::Errable';
package main;
my $example = Example->new;
# $example->error('Oops!')
DESCRIPTION
This package provides a mechanism for handling errors (exceptions).
It's a more structured approach to being "throwable". The idea is that
any object that consumes this role can set an error which automatically
throws an exception which if trapped includes the state (object as
thrown) in the exception context.
INTEGRATES
This package integrates behaviors from:
Data::Object::Role::Tryable
LIBRARIES
This package uses type constraints from:
Data::Object::Types
ATTRIBUTES
This package has the following attributes:
error
error(ExceptionObject)
This attribute is read-write, accepts (ExceptionObject) values, and is
optional.
METHODS
This package implements the following methods:
error
error(ExceptionObject $exception | HashRef $options | Str $message) : ExceptionObject
The error method takes an error message (string) or hashref of
exception object constructor attributes and throws an "exception". If
the exception is trapped the exception object will contain the object
as the exception context. The original object will also have the
exception set as the error attribute. The error attribute can be
cleared using the error_reset method.
error example #1
package main;
my $example = Example->new;
$example->error('Oops!');
# throws exception
error example #2
package main;
my $example = Example->new;
$example->error({ message => 'Oops!'});
# throws exception
error example #3
package main;
my $example = Example->new;
my $exception = Data::Object::Exception->new('Oops!');
$example->error($exception);
# throws exception
error_reset
error_reset() : Any
The error_reset method clears any exception object set on the object.
error_reset example #1
package main;
my $example = Example->new;
eval { $example->error('Oops!') };
$example->error_reset
AUTHOR
Al Newkirk, awncorp@cpan.org
LICENSE
Copyright (C) 2011-2019, Al Newkirk, et al.
This is free software; you can redistribute it and/or modify it under
the terms of the The Apache License, Version 2.0, as elucidated in the
"license file"
<https://github.com/iamalnewkirk/data-object-role-errable/blob/master/LICENSE>.
PROJECT
Wiki <https://github.com/iamalnewkirk/data-object-role-errable/wiki>
Project <https://github.com/iamalnewkirk/data-object-role-errable>
Initiatives
<https://github.com/iamalnewkirk/data-object-role-errable/projects>
Milestones
<https://github.com/iamalnewkirk/data-object-role-errable/milestones>
Contributing
<https://github.com/iamalnewkirk/data-object-role-errable/blob/master/CONTRIBUTE.md>
Issues
<https://github.com/iamalnewkirk/data-object-role-errable/issues>