The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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)