ruff/crates/ty_python_semantic/resources/mdtest/exception/except_star.md
2025-05-14 12:26:52 -04:00

1.1 KiB

except*

except* is only available in Python 3.11 and later:

[environment]
python-version = "3.11"

except* with BaseException

try:
    help()
except* BaseException as e:
    reveal_type(e)  # revealed: BaseExceptionGroup[BaseException]

except* with specific exception

try:
    help()
except* OSError as e:
    reveal_type(e)  # revealed: ExceptionGroup[OSError]

except* with multiple exceptions

try:
    help()
except* (TypeError, AttributeError) as e:
    reveal_type(e)  # revealed: ExceptionGroup[TypeError | AttributeError]

except* with mix of Exceptions and BaseExceptions

try:
    help()
except* (KeyboardInterrupt, AttributeError) as e:
    reveal_type(e)  # revealed: BaseExceptionGroup[KeyboardInterrupt | AttributeError]

Invalid except* handlers

try:
    help()
except* 3 as e:  # error: [invalid-exception-caught]
    reveal_type(e)  # revealed: BaseExceptionGroup[Unknown]

try:
    help()
except* (AttributeError, 42) as e:  # error: [invalid-exception-caught]
    reveal_type(e)  # revealed: BaseExceptionGroup[AttributeError | Unknown]