什么是在Perl方法链中抛出异常的最佳处理方式?如果方法链中的任何一个方法抛出异常,我想将值分配为0或undef。
代码示例:
```perl my $value = Object->new()->method1()->method2()->method3(); ```
代码示例:
```perl my $value = Object->new()->method1()->method2()->method3(); ```
my $x = $obj->get_obj->get_other_obj->get_another_obj->do_something;
有什么最好的方法吗?我每次都需要用try/catch/finally语句包装吗?我的情景是这样的:我在使用Catalyst和DBIC进行Web开发,并且我经常使用链式结果集。如果其中一些结果集抛出异常,我只想将值赋为0或undef,然后在模板中处理此错误(我正在使用Template Toolkit)。如果有其他方法可以在不用每次都包装try/catch的情况下做到这一点,请告诉我。如果您知道在相同的上下文(Catalyst/DBIC/TT)中更好地处理此类型的错误的方法,请建议。一个实际的例子是当用户搜索某些不存在的内容时。
$foo->Name("David")
将把名称设置为David
,而$foo->Name
将返回当前名称。因此,一个方法的空返回可能是另一个方法的有效输入。 - David W.return undef
,在列表上下文中存在问题,因为它是一个只有一个元素的列表。我在谈论返回单个对象,并且其他所有情况都期望得到单个对象。 - brian d foypackage Null; BEGIN { use strict; use Want; }; sub new { return( bless( {}, __PACKAGE__ ) ); } AUTOLOAD { rreturn( $_[0] ) if( want( 'OBJECT' ) ); return; }; DESTROY {};
然后可以像这样使用:my $rc = $my_object->get->something->die->finish;
die
设置并返回一个Null对象,finish
按预期返回undef。 - Jacques