赞
踩
异常类 | 说明 |
---|---|
System.OutOfMemoryException | 用 new 分配内存失败 |
System.StackOverflowException | 递归过多、过深 |
System.NullReferenceException | 对象为空 |
Syetem.IndexOutOfRangeException | 数组越界 |
System.ArithmaticException | 算术操作异常的基类 |
System.DivideByZeroException | 除零错误 |
在 C# 语言中异常与异常处理语句包括三种形式,即 try catch、try finally、try catch finally。
在上述三种异常处理的形式中所用到关键字其含义如下:
下面我们将分别为大家讲解这三种形式的应用。
在 try 语句中放置可能出现异常的语句,而在 catch 语句中放置异常时处理异常的语句,通常在 catch 语句中输出异常信息或者发送邮件给开发人员等。
下面通过实例来演示 try catch 的应用。
另外,在处理异常时,catch 语句是允许多次使用的,相当于多分支的 if 语句,仅能执行其中一个分支。
【实例 1】在文本框中输入一个整数,并判断其是否大于 100。
根据题目要求,如果在文本框中输入的是一个字符串或者浮点数,就会出现类型转换错误,如下图所示。
如果使用异常处理的语句来处理数据类型转换,则不会岀现上图中的提示,而是出现 catch 语句中弹出的消息框,实现的代码如下。
运行该窗体,输入字符串“abc”,并单击“确定”按钮,效果如下图所示。
从运行效果可以看出,使用异常处理后不会再出现上面所示的异常提示,而是弹出 catch 子句中的消息框。
【实例 2】使用多个 catch 语句对程序做异常处理。
从控制台输入 5 个数存入整数数组中,首先判断输入的值是否为数值,再判断数组元素是否越界。
根据题目要求,创建控制台应用程序完成该实例,具体的代码如下。
运行该程序,效果如下图所示。
从运行效果可以看出,捕获该程序产生的异常类是 FormatException。
这样,在出现不同的异常时都会有相应的异常类来处理异常,这也是比较推荐的一种编程方法。
在 try finally 形式中没有单独对出现异常时处理的代码,finally 语句是无论 try 中的语句是否正确执行都会执行的语句。
通常在 finally 中编写的代码是关闭流、关闭数据库连接等操作,以免造成资源的浪费。
下面通过实例来演示 try finally 形式的应用。
【实例 3】验证 finally 语句的使用。
将实例 1 中的 catch 语句换成 finally 语句,代码如下。
运行该窗体,单击“确定”按钮后效果如下图所示。
从运行效果可以看出,当文本框中输入的值是一个数字字符串时也会执行 finally 语句中的内容。
【实例 4】从文本框中输入当天的天气情况,并将其写入文件中,无论写入是否成功都将文件流关闭。
根据题目要求,使用 Windows 应用程序完成该实例,界面设计如下图所示。
单击“确认”按钮后,将界面的文本框中的信息写入名为 weather.txt 的文本文件中, 代码如下。
运行该窗体,并在界面中填入所需的信息,单击“确认”按钮,效果如下图所示。
try catch finally 形式语句是使用最多的一种异常处理语句。
在出现异常时能提供相应的异常处理,并能在 finally 语句中保证资源的回收。
下面通过实例来演示 try catch finally 语句的应用。
【实例 5】使用 try catch finally 形式完成实例 4 的题目要求。
在实例 4 中使用了 try finally 的形式来处理异常,这样在岀现异常时并不会在程序中给予任何提示。
下面使用 try catch finally 的形式来实现,代码如下。
运行该窗体,效果与实例 4 所示的一样,但是当程序出现错误时会弹出 catch 语句中的提示消息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。