How to handle FileNotFoundError when "try .. except IOError" does not catch it?

98,381

FileNotFoundError is a subclass of OSError, catch that or the exception itself:

except OSError as e:

Operating System exceptions have been reworked in Python 3.3; IOError has been merged into OSError. See the PEP 3151: Reworking the OS and IO exception hierarchy section in the What's New documentation.

For more details the OS Exceptions section for more information, scroll down for a class hierarchy.

That said, your code should still just work as IOError is now an alias for OSError:

>>> IOError
<class 'OSError'>

Make sure you are placing your exception handler in the correct location. Take a close look at the traceback for the exception to make sure you didn't miss where it is actually being raised. Last but not least, you did restart your Python script, right?

Share:
98,381
Thomas Wagenaar
Author by

Thomas Wagenaar

Updated on March 02, 2020

Comments

  • Thomas Wagenaar
    Thomas Wagenaar about 4 years

    How can I catch an error on python 3? I've googled a lot but none of the answers seem to be working. The file open.txt doesn't exist so it should print e.errno.

    This is what I tried now:

    This is in my defined function

    try:
        with open(file, 'r') as file:
            file = file.read()
            return file.encode('UTF-8')
    except OSError as e:
        print(e.errno)
    

    However I does not print anything when I get this error

    FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'