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