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 举报,一经查实,本站将立刻删除。