加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:29:10 所属栏目:大数据 来源:网络整理
导读:Perl社区的共识似乎是 Try::Tiny 是处理异常的首选方式。 Perl 5.14(这是我使用的版本)seems to solve issues与eval的Try :: Tiny地址。将尝试::小还仍然为我提供任何好处? 解决方法 我的回答是不受欢迎的,但我不认为Perl程序员应该尝试使用Perl中我们称之
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有例外。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读