26 Dec
2012
26 Dec
'12
10:12 p.m.
On Wed, 26 Dec 2012 13:37:13 +0200
Andrew Svetlov
As Serhiy's example shows, this mapping of error numbers to subclasses is implemented directly in OSError.__new__. We did this so that code could catch the new exceptions, even when dealing with old code that raises the legacy exception types.
Sorry. Looks like OSError.__new__ requires at least two arguments for executing subclass search mechanism:
OSError(errno.ENOENT) OSError(2,) OSError(errno.ENOENT, 'error msg') FileNotFoundError(2, 'error msg')
Indeed, it does. I did this for consistency, because calling OSError with only one argument doesn't set the "errno" attribute at all:
e = OSError(5) e.errno
Regards Antoine.