首页 > 代码库 > C# 6.0:Exception Filter——带条件的异常处理

C# 6.0:Exception Filter——带条件的异常处理

C#6.0 对异常处理有两处改进,一个是在上一篇文章中我们讨论了的在catch和finally中使用await,另一个是exception filter。在catch和finally中使用await是一个开发者欢迎的功能,无疑exception filter是另一个给开发者处理异常带来极大便利的新功能。那么神秘是exception filter那?它是一个通过返回true或false到catch块中的条件语句帮助我们过滤筛选exception的功能。

下面的代码块是一个exception filter的简单说示例。

try{    // Some exception}catch (Exception e) if (e.InnerException != null){    // handle the exception}finally{}
View Code

如上面的代码所示,一个if语句添加到了exception的后面。它表示catch块中的代码只在这个if条件为true的时候执行。我们使用不同的条件来定义多个catch块。随着一级级执行,它们也会一个个的被调用。

try{    // Some exception}catch (InvalidOperationException ioe) if (Condition1){    // handle the exception}catch (FieldAccessException fae) if (Condition2){    // handle the exception}catch(Exception exp){}finally{}
View Code

 

C# 6.0:Exception Filter——带条件的异常处理