Undefined behaviour in C [was Re: The Cost of Dynamism]

Terry Reedy tjreedy at udel.edu
Sat Mar 26 16:44:41 EDT 2016


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


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /