4

在 python 中,定义用户定义的异常是很常见的,因此它们可以返回一些用户定义的测试/输出/无论何时在用户定义的类中发生错误。但我想知道,是否有一种好的做法来处理 python 中给定类的异常?详细来说,我有以下问题:

  1. 所有与类相关的异常都应该放入定义 python 类的文件中,还是应该放入特定文件中?

  2. 是否应该为应该引发异常的任何可能的情况定义异常,或者只为一个类定义一个一般异常并通过提供一些附加文本打印出以错误方式发生的位置和事件的详细信息是否“可以” ?

  3. 如果有人可以发布一个用户定义的异常可能/应该是什么样子的示例,我将不胜感激,以便了解定义您自己的特定异常类是一件好事的原因。

谢谢亚历克斯

4

1 回答 1

0
  1. Python 程序的文件级组织并不是特别有趣,除非您在进行维护。模块级组织更为重要,因为它决定了 API(至少在某个import时间),因此请确保您的异常在使用它们的模块中。

    一个常见的设置是从包的根目录导出包的所有异常,所以你可以说from foo import Foo, FooError, BarError. 模块系统可以隐藏定义是否存在于同一文件中。

  2. 完全取决于您希望捕获异常的细粒度。不过,我经常发现内置异常(ValueErrorTypeError等)足够细粒度。对于您的包中可能出现问题的特定内容,您可以添加一个或多个例外。

  3. 怎么样...

    class ParseError(Exception):
        def __init__(self, parser_input, line, column):
            self.input = parse_input
            self.line = line
            self.column = column
    
        def __str__(self):
            # format the exception message, showing the offending part of
            # self.input and what the parser was expecting.
    
于 2012-10-22T15:02:50.243 回答