On 3/26/2016 1:43 PM, Rustom Mody wrote:

There is this nice piece of OO called the exception hierarchy:

> https://docs.python.org/2/library/exceptions.html#exception-hierarchy

https://docs.python.org/3/library/exceptions.html#exception-hierarchy

BaseException ⊇ Exception ⊇ EnvironmentError ⊇ IOError

BaseException ⊇ Exception ⊇ ⊇ OSError

At this point it would have been completely natural for IOError to continue
subclassing to all the typical errors
- File not found
- No Space left on device

Which is why we now have

      +-- OSError
      |    +-- BlockingIOError
      |    +-- ChildProcessError
      |    +-- ConnectionError
      |    |    +-- BrokenPipeError
      |    |    +-- ConnectionAbortedError
      |    |    +-- ConnectionRefusedError
      |    |    +-- ConnectionResetError
      |    +-- FileExistsError
      |    +-- FileNotFoundError
      |    +-- InterruptedError
      |    +-- IsADirectoryError
      |    +-- NotADirectoryError
      |    +-- PermissionError
      |    +-- ProcessLookupError
      |    +-- TimeoutError

'no space' is MemoryError, but that is a hardward, not OS matter.

But instead we have an integer errno and we must inquire what that is to
figure out what the exact IOError was

This statement is obsolete, but explains why the above was added in 3.3.

--
Terry Jan Reedy


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to