Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Cause validation failures to throw exception objects.
Perl

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib/MooseX/Attribute
maint-travis-ci
t
.gitignore
.perltidyrc
.travis.yml
Changes
Changes.deps
Changes.deps.all
Changes.deps.dev
README.mkdn
dist.ini
perlcritic.rc
weaver.ini

README.mkdn

NAME

MooseX::Attribute::ValidateWithException - Cause validation failures to throw exception objects.

VERSION

version 0.3.1

SYNOPSIS

{
  package Foo;
  use Moose;
  use MooseX::Attribute::ValidateWithException;

  has foo => (
    isa => 'Str',
    is  => 'rw',
    required => 1,
  );
  __PACKAGE__->meta->make_immutable;
  no Moose;
}

use Try::Tiny;

try {
  Foo->new( foo => { this_is => [qw( not what we were wanting )] } );
} catch {
  say $_->name if blessed( $_ ) && $_->isa('Thingy');
};

DESCRIPTION

ALPHA QUALITY SOFTWARE.

At present, when an attribute fails validation, Moose internally die()'s with a string. There is also no way to throw an exception object as part of the validation message, ( in order to give more context on the problem ), without also breaking how much of the validation works.

This module is an experiment in providing that feature, which really should be done in Moose itself, and done better, which is why it has been given such an obtuse name.

This module makes no promises of forwards compatibility with a future Moose release, in order to permit Moose to do whatever they want and not worry about "breaking code" that uses this module. ( So that they can easily replace this module in incompatible ways )

If your code breaking is unacceptable, do not use this module.

Use of this module assumes several things.

  1. You are o.k. with your code breaking in a future Moose release.
  2. You are o.k. with re-writing any and all code that depends on this functionality, if a future Moose release is incompatible with this module.

I'm not saying I won't do my best to provide forwards compatibility, but it is highly unlikely it will be possible, due to differences in package naming which may be essential for handling exceptions.

AUTHOR

Kent Fredric kentnl@cpan.org

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Kent Fredric kentnl@cpan.org.

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

Something went wrong with that request. Please try again.