RSS Git Download  Clone
Raw Blame History
# script to test re-throwing die:
use 5.34.0;

use Data::Printer;
use Feature::Compat::Try;
use feature 'signatures'; no warnings 'experimental';

my $res = save_document ( { category => 'foo' } ); p $res;

sub save_document ($params) {
    my $result = do { # choice is to capture error, or just die with db error
        try {         #  since user probably cannot do anything about it
			my $new_dir = _move_file($params); say "new_dir: $new_dir";
            return { id => 1 };
        }
        catch ($e) { # dsl->warning $e; # can't do it
            return { error => $e };
        }
    };
	return $result;
}

sub _move_file ($params) { # p $params;
    my $new_dir = do {
        try {
            _check_filepath( $params->{category} ); # p $new_dir;
        }
        catch ($e) {
            warn "_move_file() caught: $e";
            die $e; # rethrow error from _check_filepath()
        };
    };
	warn '####'; # don't get this far if $e caught
	return $new_dir;
}

sub _check_filepath ($category)  {
	#return $category; ####### comment this to throw error
    die qq!file "filename" already exists\n!;
}