Analysis of exception raising and handling.
In order to make this useful we make a number of assumptions. These are:
- Typing errors (TypeError, NameError, AttributeError) are assumed to occur only if:
a) Explicitly raised, e.g.
raise TypeError()or b) Explicitly caught, e.g.
- Asynchronous exceptions, MemoryError, KeyboardInterrupt are ignored.
- Calls to unidentified objects can raise anything, unless it is an attribute named ‘read’ or ‘write’ in which case it can raise IOError.