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(string $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)
maybe
maybe(string $method, any @args) (any)
The maybe method traps any errors raised by executing the dispatched method call and returns undefined on error, effectively supressing the error. 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 2.91
- maybe example 1
-
package main; my $example = Example->new; my $maybe = $example->maybe('fail'); # undef
- maybe example 2
-
package main; my $example = Example->new; my $maybe = $example->maybe('pass'); # true
- maybe example 3
-
package main; my $example = Example->new; my (@maybe) = $example->maybe(sub {1..4}); # (1..4)
AUTHORS
Awncorp, awncorp@cpan.org
LICENSE
Copyright (C) 2022, Awncorp, awncorp@cpan.org
.
This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.