c#中程序异常处理.doc_第1页
c#中程序异常处理.doc_第2页
c#中程序异常处理.doc_第3页
c#中程序异常处理.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五讲 异常处理教学要求:1. 理解异常处理的概念2. 掌握异常处理的方法教学学时:2H例1. 编写一个应用程序,要求用户通过两个文本框输入两个数,并求它们的和,并在标签框中输出。1. 界面设计新建一个项目,选择windows应用程序模板,在窗体上添加三个标签框,两个文本框和一个命令按钮,如图所示。2. 设置属性先将两个文本框改名为txtA和txtB,将输出结果的标签框改名为labC,再设置各对象的属性如下:对象名属性名属性值Form1Text加法练习Label1Text第一个加数为:Label2Text第一个加数为:button1Text确定labCText计算结果为:3. 编写代码双击确定命令按钮,进入代码编辑窗口,在自动生成的程序模块 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(请注意,输入的整数格式错误!); catch (OverflowException x) MessageBox.Show(输入整数不大于 + Int32.MaxValue.ToString(), 异常信息, MessageBoxButtons.OK, MessageBoxIcon.Warning); finally MessageBox.Show(已完成程序块的善后处理!); finally语句块是不论异常是否发生,都会执行的语句块。作业题:P38(1)补充知识:对文本框中输入数据的校验。 public partial class Form1 : Form int a, b, c; public Form1() InitializeComponent(); private void button1_Click(object sender, EventArgs e) c = a + b; Label1.Text = string.Format(0+1=2, a, b, c); private void textBox1_Validating(object sender, CancelEventArgs e) try a = int.Parse(textBox1.Text); catch(FormatException x) MessageBox.Show(x.Message); textBox1.Focus(); textBox1.SelectAll(); private void textBox2_Validating(object sender, CancelEventArgs e) try b = int.Parse(textBox2.Text); catch (FormatException x) MessageBox.Show(x.Message); textBox2.Focus(); textBox2.SelectAll(); private void textBox1_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = 13) textBox2.Focus(); private void textBox2_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = 13) button1_Click(sen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论