📅  最后修改于: 2020-11-01 03:04:50             🧑  作者: Mango
C#异常过滤器是C#编程语言的功能。它在C#6.0版本中引入。它允许我们指定条件以及catch块。
C#提供when关键字以与catch块一起应用条件(或过滤器)。
仅当条件为true时,catch块才会执行。如果条件为假,则跳过catch块,并且编译器搜索下一个catch处理程序。
C#异常过滤器用于记录目的。
catch (ArgumentException e) when (e.ParamName == "?"){ }
在下面的示例中,我们正在实现异常过滤器。仅在编译器抛出IndexOutOfRangeException异常时执行。
using System;
namespace CSharpFeatures
{
class ExceptionFilter
{
public static void Main(string[] args)
{
try
{
int[] a = new int[5];
a[10] = 12;
}catch(Exception e) when(e.GetType().ToString() == "System.IndexOutOfRangeException")
{
// Executing some other task
SomeOtherTask();
}
}
static void SomeOtherTask()
{
Console.WriteLine("A new task is executing...");
}
}
}
输出量
A new task is executing...
在下面的示例中,我们显式抛出与when条件匹配的异常。
using System;
namespace CSharpFeatures
{
class ExceptionFilter
{
public static void Main(string[] args)
{
try
{
// Throwing Exception explicitly
throw new IndexOutOfRangeException("Array Exception Occured");
}catch(Exception e) when(e.Message == "Array Exception Occured")
{
Console.WriteLine(e.Message);
SomeOtherTask();
}
}
static void SomeOtherTask()
{
Console.WriteLine("A new task is executing...");
}
}
}
输出量
Array Exception Occured
A new task is executing...