Zum Hauptinhalt springen
ai-slop/python-bare-exceptmanuelle Behebung

Bare except.

Eine `except:`-Klausel ohne Exception-Typ. Sie fängt alles, auch `KeyboardInterrupt` und `SystemExit`, sodass Strg-C und sauberes Herunterfahren zusammen mit den echten Bugs verschluckt werden.

Beanstandete und saubere Form.

Jedes Beispiel zeigt genau die Codeform, nach der die Regel sucht, und dann die kleinste Version, die die Absicht bewahrt, ohne Risiken zu verstecken oder Rauschen hinzuzufügen.

python-bare-except.py
✗ Beanstandet
def load_config(path):
    try:
        with open(path) as handle:
            return json.load(handle)
    except:
        return {}
Warum das anschlägt

Deterministischer Zeilenabgleich: beanstandet jede `except:`-Zeile ohne Exception-Klasse (optional gefolgt von einem Kommentar) in Python-Dateien außerhalb von Tests.

python-bare-except.py
✓ Sauber
def load_config(path):
    try:
        with open(path) as handle:
            return json.load(handle)
    except FileNotFoundError:
        return {}
    except json.JSONDecodeError as error:
        raise ConfigError(f"invalid config at {path}") from error
Was sich geändert hat

Fange die konkrete Exception, die du erwartest. Brauchst du wirklich alles, schreib `except BaseException:` und wirf erneut oder logge, damit die Absicht explizit ist.

Agenten packen unsichere Aufrufe in try/except, damit ein Snippet läuft, und die kürzeste Form, die jeden Fehler zum Schweigen bringt, ist `except:`. Das wirkt defensiv, verschleiert aber, welchen Fehler der Code überstehen sollte.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/python-bare-except

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich: beanstandet jede `except:`-Zeile ohne Exception-Klasse (optional gefolgt von einem Kommentar) in Python-Dateien außerhalb von Tests.

Legitimer Code, der NICHT beanstandet wird

Typisierte Handler wie `except ValueError:` oder `except (KeyError, IndexError):` sowie Testdateien werden nicht beanstandet. Die Regel greift bei der Klausel selbst, egal was der Rumpf tut.

Belege

Teil von aislops Python-Regelsatz, in der Strict-Stufe gewertet, weil ein bare except System-Exits fängt und echte Fehler verschleiert.