API for accessing leaf exception attributes
njsmith opened this issue · 0 comments
njsmith commented
Sometimes after people catch an exception, they need to access attributes on it (e.g., OSError.errno
).
But if you do with catch(OSError, handler): ...
, then handler
has to be prepared to get an ExceptionGroup
, not an OSError
. So how can handler
access the errno
attribute?
I guess the simplest possibility would be a global function accessor like:
def handler(exc):
for leaf_exc in exceptiongroup.leaf_exceptions(exc):
print(f"This exception's errno is {leaf_exc.errno}!")
(I don't think it will work to have a method on ExceptionGroup
, or making ExceptionGroup
iterable, because sometimes when you do with catch(OSError, handler): ...
you get a plain OSError
, with no ExceptionGroup
wrapped around it. This is the same reason split
is a function, not a method.)