我习惯在设计某些类时使用zope.interface,这一切都很好,但我对异常有点不确定。我没有看到任何文件谈论它们(虽然只是粗略搜索)。首先,我想知道在哪里放置某个异常X,这对于任何接口实现都是通用的。
我总是可以将异常放在自己的模块中。但是整个模块可能是一个简单的例外吗?我不介意把它放在定义相关接口的同一模块中,但我想知道这是否被认为是某种形式的坏形式?
基本上我想听一下使用过接口的人,并且知道这方面的惯例。
答案 0 :(得分:1)
最佳做法是拥有一个interfaces
模块,其中包括所有记录的接口和相应的异常,常量和事件。
这样,您可以在一个明确定义的位置定义包的API,并且查找接口的人可以看到在同一位置定义了抛出的任何异常。
以下是来自各个项目的一些示例interface.py文件: