Zum Hauptinhalt springen
ai-slop/csharp-empty-catch-rethrowmanuelle Behebung

Catch, das nur weiterwirft.

`catch (...) { throw; }`: ein Handler, dessen einzige Anweisung die Exception weiterwirft. Er ändert nichts und fügt nur einen try-Block hinzu, den man lesen muss.

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-empty-catch-rethrow.cs
✗ Beanstandet
try
{
    await _storage.UploadAsync(blob);
}
catch (IOException)
{
    throw;
}
Warum das anschlägt

Deterministischer Fensterabgleich: beanstandet ein `catch`, dessen Rumpf, über die nächsten fünf Zeilen gelesen, genau `throw;` ist.

csharp-empty-catch-rethrow.cs
✓ Sauber
try
{
    await _storage.UploadAsync(blob);
}
catch (IOException ex)
{
    throw new UploadFailedException($"Upload of {blob.Name} failed", ex);
}
Was sich geändert hat

Lösch das try/catch. Nutze `finally` zum Aufräumen oder `throw new SomeException("context", ex)`, wenn du Kontext ergänzen musst.

Agenten packen Aufrufe reflexhaft in try/catch, merken dann, dass sie mit dem Fehler nichts anfangen können, und werfen ihn weiter. Das Gerüst bleibt stehen.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/csharp-empty-catch-rethrow

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Fensterabgleich: beanstandet ein `catch`, dessen Rumpf, über die nächsten fünf Zeilen gelesen, genau `throw;` ist.

Legitimer Code, der NICHT beanstandet wird

Catches, die vor dem Weiterwerfen loggen, aufräumen oder die Exception einpacken (`throw new X(..., ex)`), 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.