Check for custom_exceptions only once #1742
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As reported on the mailing list, setting a custom exception handler which does something before displaying the default traceback leads to unexpected recursion.
We already catch custom exceptions in
run_code
and call the custom handler, but we were checking for them again inshowtraceback
. This just removes the second check, so custom exception handlers can safely call showtraceback().This is a slight API change - previously, calling showtraceback would dispatch the custom exception handler if the exception type exactly matched one of those specified (not a subclass). Now it will ignore custom exception handlers. However, I think this change is more intuitive (Min's example code on the mailing list assumed it would work this way), and the use case is reasonable.
I'll look at adding a test for this later.