c#中程序异常处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五讲异常处理
教学要求:
1.理解异常处理的概念
2.掌握异常处理的方法
教学学时:
2H
例1. 编写一个应用程序,要求用户通过两个文本
框输入两个数,并求它们的和,并在标签框中输
出。
1. 界面设计
新建一个项目,选择windows应用程序模板,
在窗体上添加三个标签框,两个文本框和一个命
令按钮,如图所示。
2. 设置属性
先将两个文本框改名为txtA和txtB,将输出
结果的标签框改名为labC,再设置各对象的属性如
下:
双击确定命令按钮,进入代码编辑窗口,在自动生成的程序模块
private void button1_Click(object sender, EventArgs e)
{
}
中输入以下代码:
int a, b,c;
a = Int32.Parse(txtA.Text);
b = Int32.Parse(txtB.Text);
c = a + b;
labC.Text = "计算结果为:"+txtA.Text + "+" + txtB.Text + "=" + c.ToString();
4.运行程序
测试程序结果是否正确。
例2. 异常处理。
在程序测试时,输入一个小数,或输入一些字符,程序出现异常并中止运行。
C#中提供了异常处理的机制方法为:
通过try语句捕获异常,通过catch语句处理异常,通过finally语句完成程序的善后处理(如收回已分配的资源,关闭与数据源的连接等),通过throw语句抛出自定义的异常。
try
{
int a, b, c;
a = Int32.Parse(txtA.Text);
b = Int32.Parse(txtB.Text);
c = a + b;
labC.Text = "计算结果为:" + txtA.Text + "+" + txtB.Text + "=" + c.ToString(); }
catch
{
MessageBox.Show("请输入正确格式的整数!");
}
例3. 处理多个异常
在测试以上程序时,若输入一个很大的整数,程序的异常提示信息不够准确。C#提供了处理多个异常的方法。
try
{
int a, b, c;
a = Int32.Parse(txtA.Text);
b = Int32.Parse(txtB.Text);
c = a + b;
labC.Text = "计算结果为:" + txtA.Text + "+" + txtB.Text + "=" + c.ToString(); }
catch (FormatException x)
{
MessageBox.Show("请输入正确格式的整数!");
}
catch (OverflowException x)
{
MessageBox.Show("输入整数不能太大!");
}
例4. 进一步提高
FormatException x中的变量x的作用,及MessageBox.Show()方法的重载。
try
{
int a, b, c;
a = Int32.Parse(txtA.Text);
b = Int32.Parse(txtB.Text);
c = a + b;
labC.Text = "计算结果为:" + txtA.Text + "+" + txtB.Text + "=" + c.ToString(); }
catch (FormatException x)
MessageBox.Show(x.Message);
}
catch (OverflowException x)
{
MessageBox.Show("输入整数不大于"+Int32.MaxValue .ToString (),
"异常信息",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
例5. 抛出自定义的异常及程序块的善后处理。
C#可通过throw语句抛出自定义的异常,通过finally语句完成程序的善后处理(如收回已分配的资源,关闭与数据源的连接等)。
public class MyException : Exception//定义一个自定义的异常类MyException 继承自Exception {
public MyException()
: base("请注意,输入的整数格式错误!")
//定义MyException类的无参构造函数,调用基类的构造函数
//并传递一个参数"请注意,输入的整数格式错误!"
{ }
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
int a, b, c;
if (txtA.Text == "" || txtB.Text == "")
throw new MyException();
a = Int32.Parse(txtA.Text);
b = Int32.Parse(txtB.Text);
c = a + b;
labC.Text = "计算结果为:" + txtA.Text + "+" + txtB.Text + "=" + c.ToString(); }
catch (MyException x)
{
MessageBox.Show(x.Message);
}
catch (FormatException x)
{
MessageBox.Show("请注意,输入的整数格式错误!");