perl – 如何从Moose获得结构化异常?
发布时间:2020-12-15 21:33:19 所属栏目:大数据 来源:网络整理
导读:考虑这个简单的类: package Foo;use Moose;has foo = ( is = 'rw',isa = 'Int' ); 然后这段代码: use Try::Tiny;use Foo;my $f = try { Foo-new( foo = 'Not an Int' );}catch { warn $_;}; 代码死了一个很好的大错误消息关于类型约束失败. 我想要提取什么
考虑这个简单的类:
package Foo; use Moose; has foo => ( is => 'rw',isa => 'Int' ); 然后这段代码: use Try::Tiny; use Foo; my $f = try { Foo->new( foo => 'Not an Int' ); } catch { warn $_; }; 代码死了一个很好的大错误消息关于类型约束失败. 我想要提取什么属性失败(foo),原因是什么(失败类型约束)以及传递的值是(不是Int),而不必解析错误字符串以获取信息. 这样的事情 catch { if( $_->isa( 'MooseX::Exception::TypeConstraint' ) ) { my $attrib = $_->attribute; my $type = $_->type; my $value = $_->bad_value; warn "'$value' is an illegal value for '$attrib'. It should be a $typen"; } else { warn $_; } }; 这可能吗?是否有MooseX分发可以使这种情况发生?更好的是,有没有一些Moose功能,我错过了会使这成为可能? 更新:我对类型约束特别感兴趣,但其他Moose错误也将非常好.我也知道我可以把对象抛在脑后.所以,我编写的代码中构造异常比较容易. 解决方法
我没有尝试过,但我认为
MooseX::Error::Exception::Class可能是你要找的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |