Message info From:Steven D\'Aprano Subject:Re: unittest: assertRaises() with an instance instead of a type Date:29 Mar 2012 06:35:20 GMT

On Thu, 29 Mar 2012 12:55:13 +1100, Ben Finney wrote:

> Steven D'Aprano <> writes:
>> (By the way, I have to question the design of an exception with error
>> codes. That seems pretty poor design to me. Normally the exception
>> *type* acts as equivalent to an error code.)
> Have a look at Python's built-in OSError. The various errors from the
> operating system can only be distinguished by the numeric code the OS
> returns, so that's what to test on in one's unit tests.

I'm familiar with OSError. It is necessary because OSError is a high-
level interface to low-level C errors. I wouldn't call it a good design
though, I certainly wouldn't choose it if we were developing an error
system from scratch and weren't constrained by compatibility with a more
primitive error model (error codes instead of exceptions).

The new, revamped exception hierarchy in Python 3.3 will rationalise much
(but not all) for this, unifying IOError and OSError and making error
codes much less relevant: