使用用户筛选的异常处理程序

用户筛选的异常处理程序基于定义的异常需求来捕获和处理异常。 这些处理程序使用带有 when 关键字的 catch 语句(Visual Basic 中的 CatchWhen)。

特定异常对象对应于多个错误时,此方法非常有用。 在这种情况下,该对象通常包含与错误关联的特定错误代码的属性。 可以在表达式中使用此错误代码属性,以便只选择要在 catch 子句中处理的特定错误。

下面的示例演示了 catch/when 语句。

try
{
    //Try statements.  
}
catch (Exception ex) when (ex.Message.Contains("404"))
{
    //Catch statements.
}
Try  
    'Try statements.  
    Catch When Err = VBErr_ClassLoadException
    'Catch statements.
End Try  

用户筛选的子句的表达式不受任何限制。 如果在执行用户筛选的表达式期间发生异常,则将放弃该异常,并视筛选表达式的值为 false。 在这种情况下,公共语言运行时继续搜索当前异常的处理程序。

结合特定异常和用户筛选的子句

catch 语句可以同时包含特定异常和用户筛选的子句。 运行时首先测试特定异常。 如果特定异常成功,运行时会执行用户筛选。 普通筛选可包含对类筛选器中声明的变量的引用。 请注意,两个筛选子句的顺序不能颠倒。

下面的示例介绍 catch 语句中的特定异常以及使用 when 关键字的用户筛选的子句。

try
{
    //Try statements.  
}
catch (System.Net.Http.HttpRequestException ex) when (ex.Message.Contains("404"))
{
    //Catch statements.
}
Try  
    'Try statements.
    Catch cle As ClassLoadException When cle.IsRecoverable()  
    'Catch statements.
End Try  

请参阅