微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是Try :: Tiny仍然建议在Perl 5.14或更高版本中进行异常处理?

Perl社区的共识似乎是 Try::Tiny是处理异常的首选方式。

Perl 5.14(这是我使用的版本)seems to solve issues与eval的Try :: Tiny地址。将尝试::小还仍然为我提供任何好处?

解决方法

我的回答是不受欢迎的,但我不认为Perl程序员应该尝试使用Perl中我们称之为“异常”的非常糟糕的概念。这些基本上是侧通道返回值。然而,仍然被迷恋例外的想法,即使有使用全局变量传递状态的所有复杂性,人们仍然试图使它工作。

然而,实际上,人们使用死亡信号失败。有些人会说,你可以死亡与参考和传回错误对象,但你不需要为此死。我们有对象,所以我们应该使用对象的所有权力:

sub some_sub {
    ...
    return Result->new( error => 1,description => ... ) if $something_went_wrong;
    return Result->new( error => 0,... );
    }

 my $result = some_sub( ... );
 if( $result->is_error ) { ... };

这不涉及全局变量,远距离操作,限制头痛,或需要特殊特殊。你创建一个小类Result,或者你想要调用它的任何东西,包装你的返回值,所以你有结构化数据,而不是没有标识的单一值。没有更多的想知道什么是返回值的意思。这是一个真正的价值还是失败的征兆?如果返回值被定义或者它是真的返回值是好的吗?你的对象可以告诉你这些东西。并且,你可以使用相同的对象与死。如果你已经使用对象并使用它作为返回值,很少推荐所有额外的东西,你必须做容忍$ @。

我在“Return error objects instead of throwing exceptions”谈到这个

但是,我知道你不能帮助别人做什么,所以你还是要假装Perl有例外。

原文地址:https://www.jb51.cc/Perl/173555.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐