如何报告驼鹿构造函数的错误?

问题描述:

我有一个读取配置的类。现在的问题是我不知道如何报告这个班的错误。如何报告驼鹿构造函数的错误?

使用die是不够的,因为配置是参数化的,并且错误是常见的。

这种情况很复杂,我调用MooseBUILD方法中的读函数。因为这个用法在使用类时显着提高了可读性,所以我想保持这种方式。

+0

我想你需要定义“错误”才能得到有用的答案。施工过程中的错误应该防止施工,因此“死亡”是合适的。在这个问题中,你认为什么非错误条件是“错误”? – darch

die有什么问题?它会抛出一个异常,您可以根据需要捕获和处理它。事实上,Moose本身会在验证错误时抛出异常。

+0

所以我应该使用'die'并且用'eval'来捕获它? –

+1

@Let_Me_Be - 你可以用'eval'来捕捉,但是有些角落可能会咬你。我正在使用[Try :: Tiny](http://search.cpan.org/perldoc?Try::Tiny)来避开它们。有关详细信息,请参阅其文档(背景)。 – bvr

您可能想要查看Carpcroak()函数。从它的文档:因为他们像 模具()或警告()

鲤鱼程序是在你自己的模块是有用的,但有消息这更可能是有用的 到你的模块的用户。在cluck,招供和longmess 的情况下,上下文是调用堆栈中每个调用的摘要。对于更短的消息,您可以使用鲤鱼或呱呱声来报告错误,因为 来自您的模块被调用的地方。

Try::Tiny一起使用,您会得到一个比eval更好的,更灵活的描述性解决方案。例如,您不必担心会导致$ @提供不良信息的边缘案例。你的例外可以更准确地描述,也可以更详细。通过鲤鱼,你甚至可以让你的cro叫行为像坦白一样,提供详细的堆栈跟踪,这使得更容易确切地看到问题的起源。