| 

.NET C# Java Javascript Exception

7

Das Exceptionshandling in C# ist sehr vielfältig und fast alle Wünsche können mit Try/Catch/Finally abgedeckt werden. Bisher gab es allerdings keine Möglichkeit, wie in anderen Sprachen auf der .NET-Plattform, einen catch-Block nur dann auszuführen, wenn eine bestimmte Bedingung erfüllt ist. So könnte eine von COM fliegende Exception auf den Fehlercode ausgewertet werden, o.ä. Mit C# 6.0 wurde das Exceptionhandling um die Exception Filters erweitert, um solche Szenarien abzudecken.

Dazu aus der Project Roslyn Webseite:

VB has them. F# has them. Now C# has them too. This is what they look like:
try { … }
catch (MyException e) when (myfilter(e))
{
 …
}
If the parenthesized expression evaluates to true, the catch block is run, otherwise the exception keeps going. Exception filters are preferable to catching and rethrowing because they leave the stack unharmed. If the exception later causes the stack to be dumped, you can see where it originally came from, rather than just the last place it was rethrown. It is also a common and accepted form of “abuse” to use exception filters for side effects; e.g. logging. They can inspect an exception “flying by” without intercepting its course. In those cases, the filter will often be a call to a false-returning helper function which executes the side effects:
private static bool Log(Exception e) { /* log it */ ; return false; }
…
try { … } catch (Exception e) when (Log(e)) {}
Links
.net csharp microsoft webcasts csharp-6.0
Weitere News:
Schreibe einen Kommentar:
Themen:
csharp-6.0 webcasts microsoft csharp .net
Entweder einloggen... ...oder ohne Wartezeit registrieren
Benutzername
Passwort
Passwort wiederholen
E-Mail
TOP TECHNOLOGIES CONSULTING GmbH