NAME
Perl::Critic::Policy::TryTiny::ProhibitExitingSubroutine - Ban next/last/return in Try::Tiny blocks
VERSION
version 0.001
DESCRIPTION
Take this code:
use Try::Tiny;
for my $item (@array) {
try {
next if $item == 2;
# other code
}
catch {
warn $_;
};
# other code
}
The next statement will not go the the next iteration of the for-loop, rather, it will exit the "try" block, emitting a warning if warnings are enabled.
This is probably not what the developer had intended, so this policy prohibits it.
One way to fix this is to use labels:
use Try::Tiny;
ITEM:
for my $item (@array) {
try {
if ($item == 2) {
no warnings 'exiting';
next ITEM;
}
# other code
}
catch {
warn $_;
};
# other code
}
CONFIGURATION
This Policy is not configurable except for the standard options.
KNOWN BUGS
This policy assumes that Try::Tiny is being used, and doesn't check for whether an alternative like TryCatch.
AUTHOR
David D Lowe <flimm@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Lokku <cpan@lokku.com>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.