ruff/crates/ty_python_semantic/resources/mdtest/exception/except_star.md
Adam Aaronson 8729cb208f
Some checks are pending
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / Fuzz for new ty panics (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / check playground (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions
[ty Playground] Release / publish (push) Waiting to run
[ty] Raise invalid-exception-caught even when exception is not captured (#18202)
Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
Co-authored-by: Carl Meyer <carl@astral.sh>
2025-05-19 18:13:34 -04:00

1.3 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]

except* with no captured exception type

try:
    help()
except* TypeError:
    pass

Invalid except* handlers with or without a captured exception type

try:
    help()
except* int:  # error: [invalid-exception-caught]
    pass

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]