Moosites,

This is a request from a co-worker; I'll see if I can explain it well.

Let's say I have a simple Moose class:

use Company::Moose;  # this module gets me MooseX::Declare, and also
declares all my class types, like the one I'm using below

class Foo
{
    has 'bar' => ( is => 'ro', isa => Int);
    has 'baz' => ( is => 'ro', isa => Company::Thingy );
};

So now if I later do this:

my $foo = Foo->new(bar => "I'm not an int!", baz =>
Company::DifferentThingy->new );

then my code will fail with a run-time error.  Which is generally what I want.

But suppose I want to collect these validation errors and return them
in some more useful fashion?  I could always wrap my call to new() in
an eval, of course, but then I'd have to parse the "internal
validation error" out of $@, which seems yucky.  Basically what I want
is to return some list of errors back to my caller, perhaps a web
page, saying "bar wasn't an integer, and baz wasn't a Thingy" so that
then my caller can hopefully do something about that (e.g. notify the
user that their input was invalid).  Is there some trickery I can do
with BUILD or BUILDARGS or somesuch to achieve this fairly easily?

TIA for any help.


            -- Buddy

Reply via email to