我们在设计程序时,为了保证程序的安全性,我们经常把可能发生错误的代码段放在try...catch块中,来捕捉可能发生的错误,并给予处理。当然这种错误不是程序的语法错误,也不是在编译时能发现的错误,只有程序运行时才可能出现的错误,如用户输入的被除数为零;数组越界;链接数据库时,指定的数据源不存在;查询数据库时,指定的表或列不存在等,都有可能引发程序发生异常。
在C#中提供了异常处理的方法,即如下语句块:
try{...}
catch(){...}
finally{...}
其中,try块中放入可能出错的语句,catch块中添加异常发生时的处理语句,finally块中的语句不管异常是否发生都要被执行,当然finally语句块也可以省略。
在catch语句的()中声明异常类的实例以在其块中进行使用。常用的异常类如下:
1、与参数有关的异常类
此类异常类均派生于System.Exception,用于处理给方法成员传递的参数时发生异常.
(1)ArgumentException类:该类用于处理参数无效的异常,除了继承来的属性名,此类还提供了string类型的属性ParamName表示引发异常的参数名称。
(2)FormatException类:该类用于处理参数格式错误的异常。
2、与成员访问有关的异常
(1) MemberAccessException类:该类用于处理访问类的成员失败时所引发的异常。
失败的原因可能的原因是没有足够的访问权限,也可能是要访问的成员根本不存在(类与类之间调用时常用)
(2) MemberAccessException类的直接派生类:
i、FileAccessException类:该类用于处理访问字段成员失败所引发的异常
ii、MethodAccessException类:该类用于处理访问方法成员失败所引发的异常
iii、MissingMemberException类:该类用于处理成员不存在时所引发的异常
3、与数组有关的异常
(1)IndexOutOfException类:该类用于处理下标越界所引发的异常
(2)ArrayTypeMismatchException类:该类用于处理在数组中存储元素的数据类型不匹配所引发的异常
(3)RankException类:该类用于处理维数错误所引发的异常
4、与IO有关的异常
(1)IOException类:该类用于处理进行文件输入输出操作时所引发的异常。
(2)IOException类的5个直接派生类:
i、DirectionNotFoundException类:该类用于处理没有找到指定的目录而引发的异常。
ii、FileNotFoundException类:该类用于处理没有找到文件而引发的异常。
iii、EndOfStreamException类:该类用于处理已经到达流的末尾而还要继续读数据而引发的异常。
iv、FileLoadException类:该类用于处理无法加载文件而引发的异常。
v、PathTooLongException类:该类用于处理由于文件名太长而引发的异常。
5、与算术有关的异常
(1)ArithmeticException类:该类用于处理与算术有关的异常。
(2)ArithmeticException类的派生类:
i、DivideByZeroException类:表示整数货十进制运算中试图除以零而引发的异常。
ii、NotFiniteNumberException类:表示浮点数运算中出现无穷打或者非负值时所引发的异常。
新闻热点
疑难解答