Fix showing SystemExit exception raise inside except handler (#14503)...
Fix showing SystemExit exception raise inside except handler (#14503)
Doing something like this:
```python
try:
5 / 0
except Exception as e:
raise SystemExit
```
was hitting an error inside UltraTB, creating a long traceback of its
internals (which, ironically, UltraTB itself then displays correctly
:-).
`ListTB.get_exception_only()` calls the `ListTB.structured_traceback()`
method *specifically* - even if `self` is a subclass, it won't use the
subclass's method. However, the exception chaining in that method uses
recursion by calling `self.structured_traceback()`, which will use a
subclass's method. Tuples were added as an option there to support
exception chaining, but not all of the machinery in connected classes
expects a tuple.
This just skips the exception chaining logic for the `etb=None` case,
when we're showing the exception only. I'm not sure this is necessarily
the best fix, but I didn't want to spend too much time following code
around a module that's old enough to vote.
Closes
#12104