Zum Hauptinhalt springen
ai-slop/silent-recoverymanuelle Behebung

Stille Wiederherstellung.

Ein catch- oder except-Block, der eine Meldung ohne den abgefangenen Fehler loggt und weitermacht. Der Fehler wird bemerkt, seine Ursache weggeworfen.

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.

silent-recovery.py
✗ Beanstandet
def refresh_exchange_rates():
    try:
        rates = provider.fetch_rates()
        cache.set("rates", rates)
    except ProviderError:
        logger.warning("could not refresh exchange rates")
Warum das anschlägt

Deterministisches Parsen von Blöcken in JS/TS und Python: beanstandet Handler, deren Body nur aus Log- oder Print-Aufrufen besteht, ohne throw, raise, return oder Zuweisung, und die den abgefangenen Fehler nie referenzieren.

silent-recovery.py
✓ Sauber
def refresh_exchange_rates():
    try:
        rates = provider.fetch_rates()
        cache.set("rates", rates)
    except ProviderError:
        logger.exception("could not refresh exchange rates")
        raise
Was sich geändert hat

Nimm den abgefangenen Fehler ins Log auf oder wirf ihn erneut bzw. erhol dich explizit, damit der Fehler diagnostizierbar bleibt.

Agenten fügen eine Log-Zeile hinzu, damit der Handler verantwortungsvoll aussieht, lassen aber die Exception selbst weg. Das Log sagt dann, dass etwas schiefging, aber nie was.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/silent-recovery

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministisches Parsen von Blöcken in JS/TS und Python: beanstandet Handler, deren Body nur aus Log- oder Print-Aufrufen besteht, ohne throw, raise, return oder Zuweisung, und die den abgefangenen Fehler nie referenzieren.

Legitimer Code, der NICHT beanstandet wird

Handler, die den Fehler ins Log aufnehmen, Python-Handler mit `logger.exception(...)` oder `exc_info=True`, Handler, die erneut werfen, zurückgeben oder sich anderweitig erholen, `pass`-Bodys und Pfade außerhalb des Produktivcodes werden nicht beanstandet.

Belege

Eingeführt in aislop v0.9.5.