Python错误异常

时间:2013-07-13 15:31:24

标签: python exception-handling error-handling

我有一个脚本,用于创建临时文本文件并在用户关闭窗口后删除。

问题在于,可能会也可能不会创建临时文本文件,具体取决于用户的操作。有时,在用户退出之前可能会删除临时文本文件。有三种可能的情况。

  1. 使用名称“tempfilename”创建临时文本文件。
  2. 临时文本文件的名称为“tempfilename”,但在用户退出之前已删除。因此,当尝试删除文件时,它会引发OSError
  3. 未创建临时文本文件,并且未创建名为“tempfilename”的变量,因此会引发NameError
  4. 我尝试过使用此代码:

    try:
        os.remove(str(tempfilename))
    except OSError or NameError:
        pass
    

    但它似乎只能抓住OSError。我做错了什么?

2 个答案:

答案 0 :(得分:3)

try:
    os.remove(str(tempfilename))
except (OSError, NameError):
    pass

答案 1 :(得分:0)

tempfilename = None

# ...

if tempfilename is not None and os.path.exists(tempfilename):
    os.remove(tempfilename)

抓住NameError并不好,因为它会隐藏代码中的其他拼写错误(例如os.remov(…))。

此外,OSError并不总是意味着该文件不存在。在Windows上,如果文件正在使用中,则会引发异常(http://docs.python.org/2/library/os.html#os.remove)。在这种情况下,您可能希望查看异常,以便您可以了解问题和/或以其他方式处理它。

异常处理程序应该尽可能地缩小,以避免隐藏不相关的错误或错误