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

前端之家收集整理的这篇文章主要介绍了是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有例外。

猜你在找的Perl相关文章