mertz at gnosis.cx
Scott David Daniels
Scott.Daniels at Acm.Org
Sun Jan 2 17:52:41 EST 2005
I was pointed to appendix A by a comp.lang.py post.
In the "except statements" section (which might better be called
the "try" statement and include a try: ... finally: ...), you say:
The 'except' statement can optionally bind a name to an exception
argument:
>>> try:
... raise "ThisError", "some message"
... except "ThisError", x: # Bind 'x' to exception argument
... print x
...
some message
String exceptions should not be encouraged (nor do I think they work).
Better code would be:
>>> class MyError(Exception): pass
>>> try:
... raise MyError, "some message"
... except MyError, x: # Bind 'x' to exception instance
... print x
...
some message
or, if you don't want two statements:
>>> try:
... raise ValueError, "some message"
... except ValueError, x: # Bind 'x' to exception instance
... print x
...
some message
The x, by the way, is bound to an instance of the class of the
exception, and it has a field "args" which will reflect the
arguments with which the exception was created. So in these
cases, x.args is ('some message',) and if the code were:
>>> try:
... raise ValueError("some message", 42)
... except ValueError, x: # Bind 'x' to exception instance
... print x
...
('some message', 42)
and x.args would be: ("some message", 42)
--Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list