Failing on string exceptions in 2.4
Fredrik Lundh
fredrik at pythonware.com
Fri Jun 15 02:56:52 EDT 2007
Stephen R Laniel wrote:
> End goal being that string exceptions would cause
> compilation to fail. A few times now, I've found myself
> doing
>
> class SomeClass:
> """docstring"""
> pass
>
> raise SomeClass, "Some description"
>
> and I've gotten a weird compiler error about the constructor
> for SomeClass.
weird as in
TypeError: this constructor takes no arguments
?
this has nothing to do with string exceptions (using string objects as
exception objects), and all to do with the fact that
raise SomeClass, "Some description"
is equivalent to
raise SomeClass("Some description")
which of course doesn't work if your class constructor isn't accepting
any arguments. this is no different from doing:
class SomeClass:
pass
obj = SomeClass("an argument") # fails with a TypeError
(note that it's the runtime that's complaining, not the compiler)
to fix this, just make sure that your exception class takes an argument
(the exception value), either by adding an __init__ method, or by
inheriting from a suitable built-in exception class.
</F>
More information about the Python-list
mailing list