class twisted.python.failure.Failure(BaseException): (source)
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.
The stack
and frame
attributes contain frames. Each frame is a tuple of (funcName, fileName, lineNumber, localsItems, globalsItems), where localsItems and globalsItems are the contents of locals().items()
/globals().items()
for that frame, or an empty tuple if those details were not captured.
Instance Variable | value | The exception instance responsible for this failure. |
Instance Variable | type | The exception's class. |
Instance Variable | stack | list of frames, innermost last, excluding Failure.__init__ . |
Instance Variable | frames | list of frames, innermost first. |
Class Variable | pickled | Undocumented |
Method | __init__ | Initialize me with an explanation of the error. |
Instance Variable | count | Undocumented |
Instance Variable | captureVars | Undocumented |
Instance Variable | tb | Undocumented |
Instance Variable | parents | Undocumented |
Instance Variable | __dict__ | Undocumented |
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 Variable | _yieldOpcode | Undocumented |
Method | _extrapolate | Extrapolate from one failure into another, copying its stack frames. |
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.
If no 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
.
For exc_tb
only traceback
instances or None
are allowed. If None
is supplied for exc_value
, the value of exc_tb
is ignored, otherwise if exc_tb
is None
, it will be found from execution context (ie, sys.exc_info
).
Parameters | exc_value | Undocumented |
exc_type | Undocumented | |
exc_tb | Undocumented | |
captureVars | if set, capture locals and globals of stack frames. This is pretty slow, and makes no difference unless you are going to use printDetailedTraceback . |
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. In Python 2 the Failure will be raised; in Python 3 the underlying exception will be re-raised.
Parameters | errorTypes | Undocumented (type: Exception ) |
raise the original exception, preserving traceback information if available.
Throw the original exception into the given generator, preserving traceback information if available.
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. |
Find the failure that represents the exception currently in context.
Remove references to other objects, replacing them with strings.
On Python 3, this will also set the __traceback__
attribute of the exception instance to None
.
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.
Get a string of the exception which caused this Failure.
Returns | Undocumented (type: str ) |
Emulate Python's standard error reporting mechanism.
Parameters | file | If specified, a file-like object to which to write the traceback. |
elideFrameworkCode | A flag indicating whether to attempt to remove uninteresting frames from within Twisted itself from the output. | |
detail | A string indicating how much information to include in the traceback. Must be one of 'brief' , 'default' , or 'verbose' . |
Print a traceback as densely as possible.
Print a traceback with detailed locals and globals information.