Zum Hauptinhalt springen
ai-slop/csharp-broad-catchmanuelle Behebung

Zu breites catch.

Ein `catch (Exception)`, das alles abfängt und die gefangene Exception nie verwendet. Probleme, mit denen du nicht gerechnet hast, verschwinden zusammen mit dem einen, das du erwartet hast.

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.

csharp-broad-catch.cs
✗ Beanstandet
public Invoice? LoadInvoice(string id)
{
    try
    {
        return _client.GetInvoice(id);
    }
    catch (Exception)
    {
        return null;
    }
}
Warum das anschlägt

Deterministischer Zeilenabgleich plus Block-Parsing: beanstandet `catch (Exception ...)` oder `catch (System.Exception ...)`, deren Rumpf die gefangene Variable nie referenziert.

csharp-broad-catch.cs
✓ Sauber
public Invoice? LoadInvoice(string id)
{
    try
    {
        return _client.GetInvoice(id);
    }
    catch (InvoiceNotFoundException)
    {
        return null;
    }
}
Was sich geändert hat

Fang die konkreten Exception-Typen, die du behandeln kannst, und lass den Rest weiterlaufen. An einer bewussten Grenze logge die gefangene Exception oder ergänze einen `when`-Filter, damit der Fehler diagnostizierbar bleibt.

Agenten fangen den Basistyp, weil das immer kompiliert und der fehlschlagende Aufruf alles Mögliche werfen könnte. Der Handler gibt einen Standardwert zurück, und die Ursache ist weg.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/csharp-broad-catch

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich plus Block-Parsing: beanstandet `catch (Exception ...)` oder `catch (System.Exception ...)`, deren Rumpf die gefangene Variable nie referenziert.

Legitimer Code, der NICHT beanstandet wird

Catches mit `when`-Filter, Catches, deren Rumpf die Exception-Variable nutzt (zum Loggen oder Einpacken), leere `{ }`-Rümpfe und `catch { throw; }` (abgedeckt durch csharp-empty-catch-rethrow) werden nicht beanstandet.

Belege

Teil des C#-Regelsatzes von aislop. Vollwertige C#-Unterstützung, einschließlich C#-spezifischer AI-Slop-Regeln, kam mit aislop v0.14.1.