我有一些使用Moose的Perl代码,它使用自定义错误类。 像这样:
use metaclass (
metaclass => 'Moose::Meta::Class',
error_class => 'My::Custom::Class',
);
My::Custom::Class
来自Moose::Error::Default
。
这曾经与Moose 2.0401一起使用。我最近将Moose升级到最新的2.1603版本,它不再起作用了。
原因似乎是整个Moose::Error::*
树已经消失了。
我确实看过Moose更改日志,但我找不到它为什么被删除,也不知道我应该如何在缺少这些软件包的情况下更新我的代码。
答案 0 :(得分:5)
模块在2.1101中消失了。相关的Changes条目说明:
2.1101 2013-10-20(试用版)
[ENHANCEMENTS]
- Moose字符串异常已被Moose :: Exception对象取代。看到 Moose ::手册:: Delta详情。
答案 1 :(得分:2)
Moose::Error
从来就不是公共API,也不适合在Moose之外的代码中使用。对于您自己的代码,您应该使用类似Throwable角色的内容。如果要添加更多结构或创建异常类的层次结构,可以使用普通的Moose方式执行 - 在异常基类中使用has
(with Throwable
}和/或创建一堆子类。