Sie sind hier:
Lexikon/Glossar
Telefon (Mo-Fr 9-16 Uhr):
0201/649590-0
|
Kontaktformular
MENU
Start
Hauptseite
Angebote im Überblick
Kernkompetenzen
Softwareentwicklung
Beratung
Firmen-Schulungen
Offene Seminare
Online-Maßnahmen
Vorträge
Coaching
Support
Fachbücher
Fachartikel
Konditionen
Themen
Kernkompetenzen
Aktuelle Themen
Web & Cloud
Apps / Mobilplattformen
Benutzeroberflächen / User Experience
.NET
JavaScript / TypeScript
Java
Programmiersprachen
Entwicklungswerkzeuge
Scripting
Softwareengineering
Datenbanken / Reporting / BI
Betriebssysteme & Virtualisierung
Microsoft Server-Produkte
Windows & Office für Anwender
Soft Skills & IT-Recht
Beratung
Beratungsthemen
Coaching
Softwareentwicklung
Technischer Support
Unsere Top-Berater
Referenzkunden
Angebotsanfrage
Individuelle Schulungen
1026 Schulungsthemen
Agendakonfigurator
Weiterbildungsphilosophie
Didaktische Konzepte
Vor Ort oder online
Unsere Top-Trainer
Referenzkunden
Teilnehmerfeedback
Angebotsanfrage
Offene Seminare
.NET-Akademie
.NET/C#-Basisseminar
WPF
WinUI
.NET MAUI
Blazor
ASP.NET WebAPI & gRPC
Entity Framework Core
Unit Testing / TDD
PowerShell
Infotage
Wissen
Übersicht
Fachbücher
Fachartikel
Konferenzvorträge
Konferenzen/Events
Spickzettel
Lexikon/Glossar
Programmcodebibliothek
Versionshistorie
Weblog
Downloads
Newsletter
Community-/Leserportal
Registrierung
.NET/C#/Visual Studio
.NET 10.0
.NET 9.0
.NET 8.0
ASP.NET (Core)/Blazor
PowerShell
Über uns
Kontakt
Selbstdarstellung
Kernkompetenzen
Dr. Holger Schwichtenberg
Top-Experten
Leitung & Kundenteam
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Konditionen
Stellenangebote
Weitere Websites
Impressum
Datenschutzerklärung, Haftung, Urheberrecht, Barrierefreiheit
Suche
Themenkatalog
Tag Cloud
Volltextsuche
Site Map
FAQs
Erklärung des Begriffs: Exception Filter
Zur Stichwortliste unseres Lexikons
Was ist
Exception Filter
?
Mit einem Exception Filter kann man zusätzlich zu den Exception-Klassen in den catch-Blöcken weiter zwischen verschiedenen Fällen differenzieren. Unterstützung für Exception Filter gibt es seit
.NET 1.0
in der Common Lan-guage Runtime (
CLR
). Aber zunächst haben nur
Visual Basic .NET
und F# diese Möglichkeit in der Sprachsyntax auch angeboten. Erst mit
C# 6.0
ist dieses syntaktische Zuckerstück auch in die C#-Sprachsyntax eingezogen. Man verwendet dazu das Schlüsselwort when.
try
{
var datei =
System.IO
.File.ReadLines(filename);
}
catch (ArgumentException) when (filename == "")
{
Console.WriteLine("Ohne Dateiname macht diese Aktion keinen Sinn!");
}
catch (ArgumentException ex) when (ex.Message.Contains("Illegales"))
{
Console.WriteLine("Ungültige Zeichen im Dateinamen: " + filena-me);
}
catch (ArgumentException ex)
{
Console.WriteLine("Ungültige Angabe: " + filename + ":" + ex.Message);
}
catch (NotSupportedException ex) when (ex.Message.Contains("format"))
{
Console.WriteLine("Ungültiges Format!");
}
catch (NotSupportedException ex)
{
Console.WriteLine("Nicht unterstützt: " + ex.Message);
}
catch (FileNotFoundException ex)
{
Console.WriteLine("Datei " + filename + " nicht gefunden");
}
catch (Exception ex)
{
Console.WriteLine("Anderer Fehler: " + ex.Message);
}
"Rethrowing" vermeiden
Mit Exception Filter können das "Rethrowing" von Laufzeitfehlern vermie-den werden, weil die zu behandelnden Fehler besser eingrenzt werden kön-nen. Das ist besonders sinnvoll bei den sehr allgemeinem Fehlertyp COMException, wo die eigentliche Ursache per ErrorCode() ausgelesen wer-den muss.
Alt mit "Rethrowing":
try
{
RessourcenZugriff();
}
catch (
System.Runtime.InteropServices
.COMException ex)
{
if ((uint)ex.ErrorCode != 0x80070005) throw ex;
Console.WriteLine("Zugang verboten!");
}
Neu mit Exception Filter:
try
{
RessourcenZugriff();
}
catch (
System.Runtime.InteropServices
.COMException ex) when ((uint)ex.ErrorCode == 0x80070005)
{
Console.WriteLine("Zugang verboten!");
}
Exception Filter mit Bedacht einsetzen
Um die Übersichtlichkeit des Programmcodes zu bewahren und Seiteneffekte zu vermeiden, sollte man in Exception Filtern kann weiteren
Methode
n aurfrufen, die weitere Aktionen auslösen. Mike Magruder aus dem
CLR
-Team empfiehlt: " To keep your world safe and simple try to limit yourself to expressions that only access the exception object, and don’t modify anything." [
http://blogs.msdn.com/b/dotnet/archive/2009/08/25/the-good-and-the-bad-of-exception-filters.aspx
].
Querverweise zu anderen Begriffen im Lexikon
System.Runtime.InteropServices
Visual Basic .NET (VB.NET)
System.IO
Methode
.NET Framework 1.0 (.NET 1.0)
CSharp 6.0 (C# 6.0)
Common Language Runtime (CLR)
Beratung & Support
Anfrage für Beratung/Consulting zu EXCEPTION FILTER
Gesamter Beratungsthemenkatalog
Technischer Support zum EXCEPTION FILTER
Schulungen
C#-Basiswissen (Grundlagen der Programmiersprache C#)
Neuerungen in C# 6.0
Anfrage für eine individuelle Schulung zum Thema EXCEPTION FILTER
Gesamter Schulungsthemenkatalog
Fachbücher
Blazor 10.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 10.0, C# 14.0 und Visual Studio 2026
C# 14.0 Crashkurs
Moderne Datenzugriffslösungen mit Entity Framework Core 10.0
.NET 10.0 Update: Die Neuerungen in .NET 10.0 gegenüber .NET 9.0
Blazor 9.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 9.0, C# 13.0 und Visual Studio 2022
C# 13.0 Crashkurs
Cross-Plattform-Apps mit .NET MAUI entwickeln
Moderne Datenzugriffslösungen mit Entity Framework Core 9.0
.NET 9.0 Update: Die Neuerungen in .NET 9.0 gegenüber .NET 8.0
PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
.NET 8.0 Update: Die Neuerungen in .NET 8.0 gegenüber .NET 7.0
Concurrency with Modern C++: What every professional C++ programmer should know about concurrency
C++20: Get the Details
Blazor 8.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 8.0, C# 12.0 und Visual Studio 2022
Moderne Datenzugriffslösungen mit Entity Framework Core 8.0
C# 12.0 Crashkurs
App-Entwicklung für Mobile und Desktop: Software Engineering mit .NET MAUI und Comet für iOS, Android, Windows und macOS
Cross-Plattform-Apps mit .NET MAUI entwickeln
Blazor 7.0: Blazor WebAssembly, Blazor Server und Blazor Hybrid
C# 11.0 Crashkurs
Moderne Datenzugriffslösungen mit Entity Framework Core 7.0
PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
C++ Core Guidelines Explained: Best Practices for Modern C++
App Engineering: SwiftUI, Jetpack Compose, .NET MAUI und Flutter
Vue.js 3 Crashkurs
Moderne Datenzugriffslösungen mit Entity Framework Core 6.0
Blazor 6.0: Blazor WebAssembly, Blazor Server und Blazor Desktop
C# 10.0 Crashkurs
Cross-Plattform-Apps mit Xamarin.Forms entwickeln
Developing Web Components with TypeScript: Native Web Development Using Thin Libraries
Alle unsere aktuellen Fachbücher
E-Book-Abo für ab 99 Euro im Jahr