Skip to content
This repository was archived by the owner on Nov 2, 2022. It is now read-only.
This repository was archived by the owner on Nov 2, 2022. It is now read-only.

API for accessing leaf exception attributes #6

@njsmith

Description

@njsmith

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.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions