csharp / expert
Snippet
Ausnahme-Filterlogik ohne Stack-Abbau
Ausnahme-Filter mit dem Schlüsselwort 'when' ermöglichen bedingtes Abfangen. Durch den Aufruf einer Methode, die 'false' zurückgibt, können Nebeneffekte wie Logging oder Auditing durchgeführt werden, ohne die Exception tatsächlich abzufangen, wodurch der ursprüngliche Stacktrace für das Debugging erhalten bleibt.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try{ProcessTransaction();}catch (Exception ex) when (AuditFailure(ex)){// Execution never enters here because AuditFailure returns false}static bool AuditFailure(Exception ex){Console.WriteLine($"Audit Log: {ex.GetType().Name} - {ex.Message}");return false; // Returning false ensures the stack remains intact for higher-level debuggers}
Erklärung
1
when (AuditFailure(ex))
Der Filterausdruck wird ausgewertet, bevor der Stack abgebaut wird.
2
return false;
Entscheidende Anweisung, die verhindert, dass der Catch-Block ausgelöst wird, während die Methodenlogik dennoch ausgeführt wird.