【问题标题】:How do I know which exceptions to catch in Python我如何知道在 Python 中要捕获哪些异常
【发布时间】:2015-12-18 09:57:49
【问题描述】:

在 Python 中,我读到最好(也更容易)捕获 execptions,而不是先检查,所以这就是我想要做的。

我的脚本使用

打开并解析一个 XMLs 文件
xml.dom.minidom.parse(xml_file_path)

所以我抓到了

xml.parsers.expat.ExpatError

但是如果文件不存在,我会得到一个 FileNotFoundError 异常,所以我显然也需要捕获它。

我知道我真的不应该捕获所有异常,但是我怎么知道我应该为像 parse() 这样的函数捕获哪些异常?

【问题讨论】:

    标签: python exception exception-handling minidom expat-parser


    【解决方案1】:

    您可以查阅您使用的库的文档。更好的是,您可以编写一个触发异常的测试first。然后您将确切地知道您需要捕获什么异常(并且将来有另一个测试来保护您)。

    【讨论】:

    • 如果您不知道异常名称,能否举例说明第二个选项?
    • 这听起来是个好主意,但实际上,我正在使用的 lib 的文档甚至没有提到 ExpatError (docs.python.org/3/library/xml.dom.minidom.html)。可能我找错地方了,你能指引我到正确的地方吗?
    【解决方案2】:

    Python 的“Built-in Exceptions”是一个很好的起点。通过一些研究,您可以知道哪些操作会导致哪些异常。该文档也特别有用,因为它提供了实际示例。

    具体而言,您正在执行文件输入/输出操作 (IO),并且 IO 操作通常按以下方式处理:

    try:
        with open('path_to_file', 'permission') as f:
            #do something with the file
    except IOError as e:
        print e
    

    【讨论】:

      猜你喜欢
      • 2012-10-27
      • 2016-08-22
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      相关资源
      最近更新 更多