使用用户筛选的异常处理程序
用户筛选的异常处理程序基于定义的异常需求来捕获和处理异常。 这些处理程序使用带有 when
关键字的 catch
语句(Visual Basic 中的 Catch
和 When
)。
特定异常对象对应于多个错误时,此方法非常有用。 在这种情况下,该对象通常包含与错误关联的特定错误代码的属性。 可以在表达式中使用此错误代码属性,以便只选择要在 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