打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#中的异常过滤器&try catch语块儿

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语句得到执行

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#捕捉错误
矩阵相乘-改进加入异常处理
java学习笔记---异常学习 5-30
V7.2引发异常
当return遇到finally
C# 中的异常捕捉(try)和异常处理(catch)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服