try {
await processPayment(order)
} catch (e) {
// ignore
}Deterministischer AST-Abgleich: beanstandet catch-Klauseln, deren Rumpf leer ist oder nur Kommentare enthält, ohne Log, Rethrow oder Recovery-Aufruf.
Ein try/catch, dessen catch-Block leer ist oder nur einen Kommentar enthält – Fehler verschwinden lautlos, ohne Log, ohne Rethrow, ohne Recovery.
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.
try {
await processPayment(order)
} catch (e) {
// ignore
}Deterministischer AST-Abgleich: beanstandet catch-Klauseln, deren Rumpf leer ist oder nur Kommentare enthält, ohne Log, Rethrow oder Recovery-Aufruf.
try {
await processPayment(order)
} catch (e) {
log.error('payment failed', { orderId: order.id, error: e })
throw e // or: return failure result, depending on caller contract
}Mach den Fehler sichtbar oder behandle ihn. Logge nützlichen Kontext und wirf erneut, gib ein typisiertes Fehlerergebnis zurück oder implementiere einen echten Recovery-Pfad mit einer Begründung, die der nächste Maintainer prüfen kann.
Agenten packen riskante Aufrufe in try/catch, um „auf Nummer sicher“ zu gehen, ohne zu überlegen, was im Fehlerfall passieren soll. Das Ergebnis ist ein Ausfall, dessen Diagnose Stunden dauert, weil es nirgends eine Logzeile gibt.
ai-slop/swallowed-exception
ai-slop
Deterministischer AST-Abgleich: beanstandet catch-Klauseln, deren Rumpf leer ist oder nur Kommentare enthält, ohne Log, Rethrow oder Recovery-Aufruf.
catch-Blöcke, die loggen, erneut werfen, ein Fehlerergebnis zurückgeben oder bewusst eine Recovery durchführen (mit begründendem Kommentar), werden nicht beanstandet.
Verschluckte Exceptions tauchten im ersten öffentlichen Scan-Batch in voneinander unabhängigen Projekten auf.