On 4/8/21 11:25 AM, Chris Angelico wrote:
Similar question: What would be the semantics of this?
with contextlib.suppress(BaseException): a = b / c except BaseException as e: print(e)
What types of exception could be caught and what types couldn't?
Well, if every exception is derived from BaseException (they are) and contextlib.suppress(BaseException) suppresses all BaseException-derived exceptions (it does) then the semantics of the above are:
- "a" will be the result of "b / c" if no exception occurs - otherwise, "a" will be whatever it was before the with-block - no exception will ever be caught by the except-clause
Generally speaking, no exception that a context manager handles (i.e. suppresses) will ever be available to be caught.