Python:在完整项目中组织用户定义的异常

Mar*_*rre 11 python exception-handling exception

我对Python中的用户定义异常以及如何在完整项目中组织它们有一些疑问.

我有一个相当复杂的python项目,其中包含一些具有以下结构的子包(__init__.py省略):

/docs (Documentation)
/apidocs (generated API documentation)
/askindex (my application package)
    /test (Unit tests directory)
        test_utils.py
        ... (more tests)
    /workers (various worker classes)
        communicators.py
        processes.py
        threads.py
        utils.py
    main.py (contains the starting point)
    data_objects.py (various objects used all around the application)
    settings.py (settings of the application)
README.txt
Run Code Online (Sandbox Code Playgroud)

我想实现我自己的Exception,在'workers'包的模块中使用它们来解决特定的错误.

我应该在哪里放置这些例外?我知道我应该拥有自己的基本异常,它将标准Exception类子类化,并将其子类化为其他异常.我应该在"工人"下创建一个新的"例外"模块吗?将异常类放在它们被引发的模块中?在这种情况下,我应该在哪里放置我的基类?我的申请结构是否适用?

我不熟悉Python中的异常,所以如果答案很明显,请原谅我...

Chr*_*gan 7

一般来说,我发现我自己的工作,当我想要一个自定义类型的异常时,它特定于一个特定的模块或包.如果它与模块相关,我只将它放在该模块中.我还没有找到一个案例,那里有一个专门用于例外的模块或包.

示例:如果我有一个jester模块,其中有一个类Juggler,其中一个方法juggle可以引发一个DroppedBall(提示扔烂番茄或类似的东西),那么DroppedBall它将在jester模块中.然后crowd.Person实例可以try看着变戏法者和except jester.DroppedBall.

如果我有一个包food,里面有各种模块,fruit,vegetable等,它们都具有一个eat方法(从继承food.Foodstuff,无疑),他们也许就能提高RottenException,这将在根自然属于food包:__init__.py.