#6777: dont discourage usage of Exception.args or promote usage of Exception.message.

This commit is contained in:
Georg Brandl 2009-09-04 11:32:18 +00:00
parent 601ee7f847
commit 7d4f8fda49
1 changed files with 14 additions and 17 deletions

View File

@ -165,14 +165,11 @@ exception type.
The except clause may specify a variable after the exception name (or tuple).
The variable is bound to an exception instance with the arguments stored in
``instance.args``. For convenience, the exception instance defines
:meth:`__getitem__` and :meth:`__str__` so the arguments can be accessed or
printed directly without having to reference ``.args``.
:meth:`__str__` so the arguments can be printed directly without having to
reference ``.args``.
But use of ``.args`` is discouraged. Instead, the preferred use is to pass a
single argument to an exception (which can be a tuple if multiple arguments are
needed) and have it bound to the ``message`` attribute. One may also
instantiate an exception first before raising it and add any attributes to it as
desired. ::
One may also instantiate an exception first before raising it and add any
attributes to it as desired. ::
>>> try:
... raise Exception('spam', 'eggs')
@ -288,28 +285,28 @@ to create specific exception classes for different error conditions::
"""Exception raised for errors in the input.
Attributes:
expression -- input expression in which the error occurred
message -- explanation of the error
expr -- input expression in which the error occurred
msg -- explanation of the error
"""
def __init__(self, expression, message):
self.expression = expression
self.message = message
def __init__(self, expr, msg):
self.expr = expr
self.msg = msg
class TransitionError(Error):
"""Raised when an operation attempts a state transition that's not
allowed.
Attributes:
previous -- state at beginning of transition
prev -- state at beginning of transition
next -- attempted new state
message -- explanation of why the specific transition is not allowed
msg -- explanation of why the specific transition is not allowed
"""
def __init__(self, previous, next, message):
self.previous = previous
def __init__(self, prev, next, msg):
self.prev = prev
self.next = next
self.message = message
self.msg = msg
Most exceptions are defined with names that end in "Error," similar to the
naming of the standard exceptions.