管理错误和异常
来源:互联网 发布:日本矮黑人种 知乎 编辑:程序博客网 时间:2024/05/16 13:04
一、异常处理
程序可能出错,有许多产生错误的原因,程序员是无法控制的,所以,任何应用程序都必须有能够检测错误、并能采用得体的方式来处理它们。
在C#里面,利用异常和异常处理程序,可以很容易地将用于实现程序主逻辑的代码与错误处理代码区分开。为了写一个支持异常处理的应用程序,需要做两件事情:
1.代码要放到一个try块中。
2.在try块后要紧跟着一个或多个catch块以捕捉可能发生的错误。catch块就是对异常进行处理的程序。
如果调用方法没有使用try块或者try之后没有找到匹配的catch块,那么一旦出现异常,程序将停止运行。解决这种问题的方法是:
1:使用多个catch处理程序,针对不同的异常,写不同的catch块,如
try {} catch(FormatException fEx) {} catch(OverflowException oEx) {}2:捕捉多个异常,用catch(Exception ex)可以捕捉任何异常
一般情况下,是将捕捉所有异常的catch放在catch群得最后一个,保证异常能够得到捕捉。而还存在一个问题,如果异常与多个catch处理程序匹配,其将运行由“运行时”发现的第一个catch处理程序。
要记住的一个重点是,当异常抛出后,会改变程序的执行流程。这意味着你不能保证当一个语句结束之后,它后面的一个语句肯定会运行,因为前面一个语句可能抛出异常,这时可以将一定要执行的语句(如关闭流)放到finally块中,在这个块中,无论是否前面有异常抛出,都会得到执行。
二、使用checked和unchecked整数运算
举例,int固定为32位,其支持的取值范围是-2147 483 648~2147 483 647。如果当前值是2147 483 647,加1就会溢出。如何避免或者检测出这种溢出的风险?
1、为了启动或者禁止溢出检查,可设置项目属性,项目>>“项目”属性(“项目”是指名称)>>单击生成标签>>单击右下角的“高级”按钮,在随后出现的“高级生成设置”对话框中,勾选或者清除“检查运算上溢/下溢”选项。
checked语句是指以checked关键字开头的一个代码块。checked语句中任何整数运算溢出,都会抛出一个OverflowException异常,如下例所示:
int number = int.MaxValue; checked { int willThrow = number++; Console.WriteLine("永远都执行不到这里"); }注意:只有直接放在checked块中的整数运算才会得到溢出检验,加入块中有方法调用,方法中的溢出是见车不到的。
还可以使用unchecked来创建一个强制不检查溢出的语句块。一个unchecked块中的所有整数运算都不会检查,永远不会抛出OverflowException异常。例如:
int number = int.MaxValue; unchecked { int willThrow = number++; Console.WriteLine("能执行到这里"); }
- 管理错误和异常
- C/C++项目中异常和错误管理
- 异常和游标管理
- 异常和游标管理
- 异常和状态管理
- 中断和异常管理
- 错误和异常处理
- 面对错误和异常
- Python错误和异常
- 错误和异常
- 异常和错误
- 错误和异常处理
- 错误和异常
- (十六)错误和异常
- python错误和异常
- 8. 错误和异常
- python14:错误和异常
- 错误和异常
- 组合算法
- 最后审视一下自己,然后去生活得很灿烂
- c++头文件相互包含
- ikey2032的安装和使用方法
- Oracle 10g中闪回数据库技术详解
- 管理错误和异常
- 命令行模式下使用THINKPHP
- 【精心整理】PHP程序员笔试题+答案
- flex拖拽实例
- REST介绍--来自wiki
- linux kernel 2.4 和 2.6 的区别
- 深刻理解 体会思科UCS刀片
- POJ 2513 solution
- Android 线程详解