在Python 3中,我们如何捕获特定的OSError异常?
我当前的代码捕获了所有的OSError,但是只需要捕获OSError: [Errno 12]

try:
    foo()
except OSError as e:
    print('Caught OSError: [Errno12]')
完整的错误消息是:

我们如何让Python仅捕获Errno12OSError变体?

最佳答案

您可以使用 errno OSError属性。对于错误:

>>> raise OSError(12, 'Some Error')
Traceback (most recent call last):

  File "<ipython-input-5-8a046f16ebb6>", line 1, in <module>
    raise OSError(12, 'Some Error')

OSError: [Errno 12] Some Error
使用以下内容:
try:
    raise OSError(12, 'Some Error')
except OSError as e:
    if e.errno == 12:
        print('OSError no. 12 caught')
    else:
        raise

# Output:
# OSError: [Errno 12] Some Error

08-20 04:47