In Python 3, how can we catch a specific OSError
exception?
My current code catches all OSError
, but only OSError: [Errno 12]
needs to be caught.
try:
foo()
except OSError as e:
print('Caught OSError: [Errno12]')
The full error message is:
Caught OSError: [Errno12] Cannot allocate memory
How can we let Python catch only the Errno12
variant of OSError
?
You can use the errno
attribute of the OSError
. For an error:
>>> 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
Use the following:
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