C#中的异常过滤器&try catch语块儿
2017-06-01 22:22
225 查看
try catch 语块
使用 try,catch,finally语句捕捉和处理这些异常所代表的错误tyr{ int left = int.Parse(lhsOperand.Text); int righ = int.Parse(rhsOperand.Text); result.Text = answer.ToString(); }catch(FormatException fEx) { // 处理异常 }
代码运行时, 会尝试执行try块内的所有语句 如果没有任何语句产生异常,这些语句将一个接一个运行,直到全部完场 ,但一旦出现异常,就跳出try块,进入一个catch处理程序中执行
使用多个catch
tyr{ int left = int.Parse(lhsOperand.Text); int righ = int.Parse(rhsOperand.Text); result.Text = answer.ToString(); }catch(FormatException fEx) { // 处理异常 }catch(FormatException fEx)
{
// ...
}
异常过滤器
异常过滤器是C#6的新功能,它影响异常和catch处理程序的匹配方式,允许指定catch处理程序的额外使用条件,这些条件采用的型式是when关键字加布尔表达式,catch(Exception ex)when(ex.GetType()!=typeof(System.OutOfMemoryException)){ // 处理之前未捕捉的除OutOfMemoryException之外的所有异常 } // GetType方法返回作为实参提供的变量的类型
使用finally块
当catch处理程序运行完毕,会从整个try/catch块之后的语句继续,而不是从抛出异常的语句之后继续,不执行某个语句,有时没问题,但许多时候都有大问题,解决方案是写一个finally块,放到其中的语句总是运行(无论是否抛出异常),finally块要么紧接在try块之后,要么紧接最后一个catch块之后,
只要程序进入与finally块关联的try块,finally块是种都会运行—即使发生异常,如果抛出异常,而且在本地捕捉阿斗该异常,那么首先运行异常处理程序,然后运行finally块,
如果没有在本地捕捉到异常,那么首先运行finally块,再搜索异常处理程序,无论如何,finally块总是运行.
TextReader reader = ...; ... try { string line = reader.ReadLine(); while(line!=null) { ... line = reader.ReadLine(); } } finally { if(reader!=null) { reader.Dispose(); } }
即使读取文件时发生异常,finally块也保证reader.Dispose语句得到执行
相关文章推荐
- 黑马程序员之C#学习笔记:异常捕获try-catch
- 【又长见识了】C#异常处理,try、catch、finally、throw
- C#中的异常捕获机制(try catch finally)
- 异常----异常捕捉try&catch
- 【c#】异常处理:try catch throw
- c#描述异常处理语句try、catch、finally执行时的相互关系
- C# 中的异常捕捉(try)和异常处理(catch)
- C# 中异常抛出捕获机制--throw / try,catch,finally
- C++中的异常操作:throw&try&catch
- 异常----异常捕捉try&catch
- C#中的异常捕获机制(try catch finally)
- C#的try-catch-finally 中的catch语句的异常有顺序的区别
- C#中的异常捕获机制(try catch finally)
- C#学习使用try-catch-finally错误处理表达式(续)--定义自己的异常消息类
- C# 中的异常捕捉(try)和异常处理(catch)
- c#描述异常处理语句try、catch、finally执行时的相互关系
- C#中的异常捕获机制(try catch finally)
- C#中的异常捕获机制(try catch finally)
- 异常:编译时异常和运行时异常&throw和throws区别try-catch的应用
- C#中的异常捕获(try catch finally)