【问题标题】:How do I check for a certain type of OSError in a try except block?如何在 try except 块中检查某种类型的 OSError?
【发布时间】:2016-06-25 18:45:37
【问题描述】:

我有一些代码可能会根据用户的输入引发OSError。更具体地说,它可以提高OSError: [WinError123]。我面临的问题是我的 try except 块检查 OSError 这是一个太广泛的异常。

我看过这个question 和这个question 但是,我不清楚errno 是如何工作的。我还查看了errnodocumentation,但我不清楚它与OSError 中的特定错误有何关系。

如何捕获特定的OSError,即WinError 123?

另外,如果你能向我解释你使用了哪些库/你是如何做到的/你的解决方案的思考过程会很棒!

【问题讨论】:

标签: python python-3.x error-handling


【解决方案1】:

你能不能不这样做:

try:
    my_function()
except OSError as e:
    if e.args[0] != 123:
        raise
    print("Deal with the 123 error here")

【讨论】:

  • 我尝试这样做时得到以下输出:os.chdir(paths) OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: '' 所以我认为您提出的代码可能不起作用? B/c 它没有忽略 WinError123
  • 如何复制此错误?编辑:没关系。我能够做到。 errno 是 22,但 e[0] 是 123。
  • 在 OP 评论部分查看我与 Padraic 的讨论。 errno 是 22 由实验确定的。
  • 好吧,我已经更新了。它不使用errno,它只选择WinError 123。
  • 对于python 3(和2.7?),您似乎需要使用if e.winerror != 123:
猜你喜欢
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多