mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 21:35:58 +00:00

Improves error message for [except*](https://peps.python.org/pep-0654/) (Rules: B025, B029, B030, B904) Example python snippet: ```python try: a = 1 except* ValueError: a = 2 except* ValueError: a = 2 try: pass except* (): pass try: pass except* 1: # error pass try: raise ValueError except* ValueError: raise UserWarning ``` Error messages Before: ``` $ ruff check --select=B foo.py foo.py:6:9: B025 try-except block with duplicate exception `ValueError` foo.py:11:1: B029 Using `except ():` with an empty tuple does not catch anything; add exceptions to handle foo.py:16:9: B030 `except` handlers should only be exception classes or tuples of exception classes foo.py:22:5: B904 Within an `except` clause, raise exceptions with `raise ... from err` or `raise ... from None` to distinguish them from errors in exception handling Found 4 errors. ``` After: ``` $ ruff check --select=B foo.py foo.py:6:9: B025 try-except* block with duplicate exception `ValueError` foo.py:11:1: B029 Using `except* ():` with an empty tuple does not catch anything; add exceptions to handle foo.py:16:9: B030 `except*` handlers should only be exception classes or tuples of exception classes foo.py:22:5: B904 Within an `except*` clause, raise exceptions with `raise ... from err` or `raise ... from None` to distinguish them from errors in exception handling Found 4 errors. ``` Closes https://github.com/astral-sh/ruff/issues/14791 --------- Co-authored-by: Micha Reiser <micha@reiser.io>
24 lines
206 B
Python
24 lines
206 B
Python
"""
|
|
Should emit:
|
|
B029 - on lines 8, 13, 18 and 23
|
|
"""
|
|
|
|
try:
|
|
pass
|
|
except ():
|
|
pass
|
|
|
|
try:
|
|
pass
|
|
except () as e:
|
|
pass
|
|
|
|
try:
|
|
pass
|
|
except* ():
|
|
pass
|
|
|
|
try:
|
|
pass
|
|
except* () as e:
|
|
pass
|