如何更简洁地将抛出的Exception转换为Failure?(附Perl示例代码)
更简洁的Perl异常转Failure实现方式
嘿,这个需求完全可以简化!下面给你几种更清爽的实现方案,看你用的是哪种try/catch工具:
方案1:用Try::Tiny(轻量常用模块)
如果还没装Try::Tiny,先通过cpanm Try::Tiny安装。它的语法本身就很简洁,不需要额外的default分支:
use Try::Tiny; use Failure; try { die 'always' } catch { fail $_ };
Try::Tiny的catch块会自动捕获所有die抛出的异常,直接把捕获到的异常传给fail就行,省去了嵌套的default逻辑。
方案2:用Perl 5.34+原生try/catch
如果你的Perl版本在5.34及以上,原生就支持try/catch语法,不需要额外装模块,写法同样简洁:
use v5.34; use Failure; try { die 'always' } catch ($e) { fail $e };
原生语法里捕获到的异常会存在变量$e中,直接传给fail即可。
方案3:简化你原本用的Try::Catch写法
如果你坚持用原来代码里的Try::Catch模块,其实也可以去掉冗余的default分支,因为CATCH块默认就匹配所有异常:
use Try::Catch; use Failure; try { die 'always' } CATCH { fail $_ };
这样比你原来的代码少了一层嵌套,清爽不少。
内容的提问来源于stack exchange,提问作者J Hall
相关产品推荐
相关产品推荐

