NAME

Venus::Role::Catchable - Catchable Role

ABSTRACT

Catchable Role for Perl 5

SYNOPSIS

package Example;

use Venus::Class;

use Venus 'error';

with 'Venus::Role::Tryable';
with 'Venus::Role::Catchable';

sub pass {
  true;
}

sub fail {
  error;
}

package main;

my $example = Example->new;

# my $error = $example->catch('fail');

DESCRIPTION

This package modifies the consuming package and provides methods for trapping errors thrown from dispatched method calls.

METHODS

This package provides the following methods:

catch

catch(Str $method, Any @args) (Any)

The catch method traps any errors raised by executing the dispatched method call and returns the error string or error object. This method can return a list of values in list-context. This method supports dispatching, i.e. providing a method name and arguments whose return value will be acted on by this method.

Since 0.01

catch example 1
package main;

my $example = Example->new;

my $catch = $example->catch('fail');

# bless({...}, "Venus::Error")
catch example 2
package main;

my $example = Example->new;

my $catch = $example->catch('pass');

# undef
catch example 3
package main;

my $example = Example->new;

my ($catch, $result) = $example->catch('pass');

# (undef, 1)
catch example 4
package main;

my $example = Example->new;

my ($catch, $result) = $example->catch('fail');

# (bless({...}, "Venus::Error"), undef)