一、异常的介绍
异常实际上是程序中的错误导致中断了正常的指令流的一种事件,也就是说异常是任何中断正常程序流程的错误条件。
产生异常的条件:
- 想打开的文件不存在
- 网络连接中断
- 调用空引用
- 除0异常等
由于C#是面向对象,所以所有的错误都会被封装在异常对象中。一旦错误发生,将接收到一个特定的异常对象。
二、异常类
.NET Framework类库中的所有异常都派生于Exception类,异常包括系统异常和应用异常。
默认所有系统异常派生于System.SystemException,所有的应用程序异常派生于System.ApplicationException。
系统异常一般不可预测,比如内存堆栈溢出,空对象引用,权限限制,硬件读取错误等等。
应用程序异常一般可以预测,比如文件对象找不到啦,值不在范围内啦,数据类型不一致等等,设置,处理逻辑可以判断的。
三、异常处理
在C#语言中异常与异常处理语句即try…catch或者try…catch…finally。
在上述异常处理的形式中所用到的关键字其含义如下:
- try:用于检查发生的异常,并帮助发送任何可能的异常。
- catch:以控制权更大的方式处理错误,可以有多个catch子句。
- finally:无论是否发生了异常,finally的代码块都将被执行。
例如:
try
{
int a=2;
int b;
b=a/0;
Console.WriteLine(“被除数不能为0,出现异常”);
}
catch(Exception e)
{
Console.WriteLine(“捕捉到异常:{0}”,e.Message);
}
finally
{
Console.WriteLine(“出现异常我也能继续执行”);
}
上面的代码中出现了被除数为0的异常,在计算机里是不能被解析的,也就是计算机无法解读被除数为0。
异常出现,那么就会被下面的catch捕捉到,try里面出现异常都会中断程序,从而被catch捕捉,catch会捕捉try里面的任何异常。
最后的代码块finally,无论try是否出现异常,写在finally里的代码都会执行。