c#中程序异常处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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("请注意,输入的整数格式错误!");

相关文档
最新文档