【问题标题】:What exception class to use for file parsing error?文件解析错误使用什么异常类?
【发布时间】:2012-02-14 12:13:13
【问题描述】:

我正在为某种文件格式编写解析器。如果文件格式不正确(并且无法解析),则解析器会抛出异常。

我应该使用 Python 2 异常层次结构中的哪个异常类?

【问题讨论】:

  • 另见 Python 教程中关于user-defined exceptions 的部分。
  • @Sven Marnach:解析器是使用 Boost.Python 编写的扩展模块的一部分。而且我不知道如何使用 Python C-API 或 Boost.Python 派生新的异常类。因此,我更喜欢使用现有的异常类之一。可能的候选对象似乎是 Exception、ValueError 和 IOError。
  • stackoverflow.com/questions/2261858/…。如果您的实际问题是如何使用 boost.python 创建自定义异常类,那么您问错了问题。 :)

标签: python exception


【解决方案1】:

ValueError 似乎是合适的。

【讨论】:

    【解决方案2】:

    怎么样

    class XyzParseError(Exception):
        pass
    

    XyzParser 是您的解析器类的名称?这也是标准库中的HTMLParser 所做的。

    【讨论】:

    • 为什么我应该从 Exception 而不是 ValueError 派生(如 jkbr 所建议的)?
    • @user763305:jkbr 没有建议从ValueError派生,而是使用ValueError 本身。你应该从Exception 派生,因为写except ValueError 的人肯定不想赶上XyzParseError
    • 好用的异常类太多了,不需要XyzParseError
    • @ups 捕获异常时,您希望能够尽可能具体。捕获不需要的异常会隐藏错误并导致难以调试的错误。因此,如果您在此处重用 ValueError 并捕获它而不是自定义异常,则可能会捕获您不打算捕获的异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    相关资源
    最近更新 更多