Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Non-fatal error handling with Mouse types?

by Haarg (Curate)
on Oct 03, 2019 at 10:02 UTC ( #11107004=note: print w/replies, xml ) Need Help??


in reply to Non-fatal error handling with Mouse types?

If this is something you want to do on a number of attributes, you could use a method modifier to wrap them with exception handling. Here's an example:

use strict; use warnings; BEGIN { package Foo; use Moo; use Types::Standard qw(Enum); has error_mode => ( is => 'rw', isa => Enum[qw/carp error bot +h/], default => 'error' ); has another_attribute => ( is => 'rw', isa => Enum[qw/doing a thing/ +], default => 'a' ); sub _err { my ( $self, $err ) = @_; warn $err; } around qw(error_mode another_attribute), sub { my ($orig, $self) = (shift, shift); my $return; eval { $return = $self->$orig(@_); 1; } or do { $self->_err($@); return $self->$orig; }; return $return; }; 1; } sub welp { my $f = Foo->new; $f->error_mode("blah"); $f->another_attribute("blah"); } welp();

This would allow you to define all of your attributes using standard Moo* mechanisms, but convert a selection of them to 'soft' error handling.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11107004]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2020-10-29 14:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (271 votes). Check out past polls.

    Notices?