Part of twisted.python.failure View Source View In Hierarchy
Known subclasses: twisted.spread.pb.CopiedFailure, twisted.spread.pb.CopyableFailure
A basic abstraction for an error that has occurred.
This is necessary because Python's built-in error mechanisms are inconvenient for asynchronous communication.Instance Variables | value | The exception instance responsible for this failure. |
type | The exception's class. |
Method | __init__ | Initialize me with an explanation of the error. |
Method | trap | Trap this failure if its type is in a predetermined list. |
Method | check | Check if this failure's type is in a predetermined list. |
Method | raiseException | raise the original exception, preserving traceback information if available. |
Method | throwExceptionIntoGenerator | Throw the original exception into the given generator, preserving traceback information if available. |
Method | __repr__ | Undocumented |
Method | __str__ | Undocumented |
Method | __getstate__ | Avoid pickling objects in the traceback. |
Method | cleanFailure | Remove references to other objects, replacing them with strings. |
Method | getTracebackObject | Get an object that represents this Failure's stack that can be passed to traceback.extract_tb. |
Method | getErrorMessage | Get a string of the exception which caused this Failure. |
Method | getBriefTraceback | Undocumented |
Method | getTraceback | Undocumented |
Method | printTraceback | Emulate Python's standard error reporting mechanism. |
Method | printBriefTraceback | Print a traceback as densely as possible. |
Method | printDetailedTraceback | Print a traceback with detailed locals and globals information. |
Class Method | _findFailure | Find the failure that represents the exception currently in context. |
Initialize me with an explanation of the error.
By default, this will use the current exception
(sys.exc_info
()). However, if you want to specify a
particular kind of failure, you can pass an exception as an argument.
exc_value
is passed, then an "original"
Failure will be searched for. If the current exception handler that this
Failure is being constructed in is handling an exception raised by raiseException
,
then this Failure will act like the original Failure.
Trap this failure if its type is in a predetermined list.
This allows you to trap a Failure in an error callback. It will be automatically re-raised if it is not a type that you expect.
The reason for having this particular API is because it's very useful in Deferred errback chains:
| def _ebFoo(self, failure): | r = failure.trap(Spam, Eggs) | print 'The Failure is due to either Spam or Eggs!' | if r == Spam: | print 'Spam did it!' | elif r == Eggs: | print 'Eggs did it!'
If the failure is not a Spam or an Eggs, then the Failure will be 'passed on' to the next errback.Parameters | errorTypes | (type: Exception
) |
Parameters | errorTypes | (type: list of Exception classes or fully-qualified class
names.
) |
Returns | the matching Exception type, or None if no match.
|
Returns | The next value yielded from the generator. | |
Raises | StopIteration | If there are no more values in the generator. |
anything else | Anything that the generator raises. |
Get an object that represents this Failure's stack that can be passed to traceback.extract_tb.
If the original traceback object is still present, return that. If this traceback object has been lost but we still have the information, return a fake traceback object (see_Traceback
).
If there is no traceback information at all, return None.