• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# 异常之try、catch、checked、unchecked、throw、finaelly

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

尝试执行代码和捕捉异常

C#支持异常和异常处理程序,可以很容易地区分程序主逻辑的代码与处理错误的代码。
要想写支持异常处理的应用程序,要做下面两件事:
1.把代码放到try块中。代码运行时,会执行try块内的所有语句。如果没有任何异常,这些语句将一个个执行,直到全部执行完毕.

2.写完代码块后,要写一个或多个catch处理程序来处理可能发生的错误。每个catch处理程序都捕捉并处理特定类型的异常。
一个例子如下:

未处理的异常

如果try块抛出异常,但没有对应的catch处理程序,那么会发生什么?

可以看到int.Parse会抛出OverflowException异常,而catch处理程序目前只能捕捉FormatException异常,由于找不到匹配的catch处理程序,整个程序终止,报告发生了未处理的异常。

使用多个catch处理程序

不同错误可能抛出不同类型的异常。为了解决这个问题,可以提供多个catch处理程序

捕捉多个异常

FormatExceptionOverflowException都继承于SystemException,而SystemException又继承于Exception,所以捕捉Exception相当于捕捉所有可能发生的异常



如果异常与try块之后的多个catch处理程序匹配会发生什么?
假如一个处理程序捕捉FormatException,另一个捕捉Exception,最终运行哪一个?

异常发生后将运行由“运行时”法线的第一个匹配的异常处理程序,其他处理程序会被忽略。


Checked和unchecked整数运算

C#的int是32位大小,取值范围是 -2147483648~2147483647
在代码中可用checkedunchecked关键字选择性打开和关闭程序一个特定部分的整数溢出检查.

编写checked语句


checked语句是以checked关键字开头的代码块。
checked语句中的任何整数运算溢出都抛出OverflowException异常.

编写unchecked语句


unchecked关键字创建强制不检查溢出的代码块。永远不抛出OverflowException异常.

check表达式


注意:不能使用checked和unchecked关键字控制浮点运算。
checked和unchecked关键字只适合int和long等整型运算。
浮点运算永远不抛出OverflowException异常。



抛出异常

假如要实现一个星期名称的方法,接受int参数并返回对应的星期名称,比如int参数为1,返回Monday,2返回Tuesday.
假如传递的整数小于1或大于7,这个时候怎么办呢?
这种情况最好抛出异常,用throw语句抛出异常,如下例所示:


throw表达式

可用throw表达式加一个?:操作符简化代码,?:操作符相当于针对一个表达式的if…else语句。它要获取三个操作数:
条件?第一个表达式 :第二个表达式
首先求值条件,如果为true就求值第一个表达式,如果为false
就求值第二个表达式。
用法类似如下

finally块

finally块,放到其中的语句总是运行(无论是否抛出异常)
finally块要么紧接在try块之后,要么紧接catch块之后,只要程序进入与finally块关联的try块,finally总是运行,即使发生异常


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
再谈C#的装箱和拆箱发布时间:2022-07-14
下一篇:
C#中的Process类使用发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap