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

Breites except mit pass.

`except Exception: pass` (oder `BaseException`): ein Handler, der jeden gewöhnlichen Fehler fängt und nichts damit macht. Der Fehler hinterlässt keine Spur.

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-broad-except.py
✗ Beanstandet
def sync_user(user_id):
    try:
        profile = crm.fetch_profile(user_id)
        db.save_profile(profile)
    except Exception:
        pass
Warum das anschlägt

Deterministischer Zeilenabgleich: beanstandet `except Exception:` oder `except BaseException:` (mit oder ohne `as e`), wenn die nächste Zeile `pass` ist oder ein Kommentar gefolgt von `pass`.

python-broad-except.py
✓ Sauber
def sync_user(user_id):
    try:
        profile = crm.fetch_profile(user_id)
    except crm.NotFound:
        logger.info("no CRM profile for user %s", user_id)
        return
    db.save_profile(profile)
Was sich geändert hat

Grenze die Exception-Klasse ein, logge den Fehler mit Kontext oder wirf ihn erneut. Ist das Verschlucken wirklich gewollt, benenne den konkreten Fehler, der ignoriert wird, und warum.

Agenten fügen ein Catch-all hinzu, um an einem Fehler vorbeizukommen, auf den sie beim Generieren einmal gestoßen sind, und füllen den Rumpf mit `pass`, weil sie keinen Plan für den Fehlerfall haben.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/python-broad-except

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich: beanstandet `except Exception:` oder `except BaseException:` (mit oder ohne `as e`), wenn die nächste Zeile `pass` ist oder ein Kommentar gefolgt von `pass`.

Legitimer Code, der NICHT beanstandet wird

Breite Handler, die loggen, erneut werfen, zurückgeben oder sonst etwas tun, werden nicht beanstandet, ebenso wenig enge Handler wie `except ValueError: pass`.

Belege

Teil von aislops Python-Regelsatz, in der Standard-Stufe gewertet, weil breite Fehlerbehandlung riskant, an Grenzen aber manchmal gewollt ist.