csharp / intermediate
Snippet
Selektives Abfangen mit Exception-Filter-Ausdrücken
Exception-Filter (mit dem Schlüsselwort 'when') ermöglichen es, eine Ausnahme nur dann abzufangen, wenn eine bestimmte Bedingung erfüllt ist. Dies ist sauberer als das Abfangen und erneute Auslösen und bewahrt den ursprünglichen Stack-Trace.
snippet.cs
csharp
1
2
3
4
5
try {PerformNetworkAction();} catch (IOException ex) when (ex.Message.Contains("Timeout")) {Console.WriteLine("Retry necessary due to timeout.");}
Erklärung
1
when (ex.Message.Contains("Timeout"))
Der Catch-Block wird nur ausgeführt, wenn dieser boolesche Ausdruck 'true' zurückgibt.
2
catch (IOException ex)
Gibt den Basis-Exception-Typ an, gegen den gefiltert wird.