顺序结构程序设计
C#程序设计教程 Visual C#程序设计教程第1章 程序设计语言与程 章 序设计方法 第2章 Visual C#概述 章 概述 第3章 C#语法基础 章 语法基础 4章 第4章 顺序结构程序设计 第5章 选择结构程序设计 章 第6章 循环结构程序设计 章 第7章 面向对象编程技术 章 第8章 继承 章 第9章 数组与自定义类型 章 第10章 菜单、工具栏与状态 章 菜单、 栏 第11章 文件操作 章 12章 第12章 数据库技术 第13章 ActiveX控件 章 控件 第14章 异常处理与跟踪调试 章 第15章 开发 章 开发Web应用程序 应用程序 第16章 部署应用程序 章 下一页
上一页
顺序结构程序设计
14.1 异常处理 C#提供了处理错误的机制,即使用异常类 提供了处理错误的机制, 提供了处理错误的机制 Exception为每种错误提供定制的处理,并把识 为每种错误提供定制的处理, 为每种错误提供定制的处理 别错误的代码和处理错误的代码分离开来。 别错误的代码和处理错误的代码分离开来。 14.1.1 try…catch捕获异常 捕获异常 正常情况下,程序流进入try控制块 控制块, 正常情况下,程序流进入 控制块,如果 没有错误发生,就会正常操作。 没有错误发生,就会正常操作。当程序流离开 try控制块后,如果没有发生错误,将执行 控制块后, 控制块后 如果没有发生错误, catch后的 后的finally语句块或顺序执行;当执行 语句块或顺序执行; 后的 语句块或顺序执行 当执行try 时
章节目录
上一页
下一页
顺序结构程序设计
发生错误,程序流就会跳转到相应的 发生错误,程序流就会跳转到相应的catch语句 语句 块,如【例14-1】。 】 控件中接受两个数, 【例14-1】在TextBox控件中接受两个数,计算 】 控件中接受两个数 它们的商。 它们的商。 该例中需要利用TextBox的Text属性接受数 该例中需要利用 的 属性接受数 因为Text属性值描述的类型为字符串型, 属性值描述的类型为字符串型, 字,因为 属性值描述的类型为字符串型 所以在程序运行的过程中,可能引发异常;另 所以在程序运行的过程中,可能引发异常; 外,除数不能为0,否则,引发异常。 除数不能为 ,否则,引发异常。
章节目录
上一页
下一页
顺序结构程序设计
程序运行结果如图14-2所示。 所示。 程序运行结果如图 所示
图14-2 由a引发的异常 引发的异常
【计算a/b】按钮的 事件代码为: 计算 】按钮的Click事件代码为: 事件代码为 try { a=Convert.ToInt32(textBox1.Text); } catch{ MessageBox.Show("请将 的值输入为数字 请将a的值输入为数字 请将 的值输入为数字"); return;}章节目录 上一页 下一页
顺序结构程序设计
try{ b=Convert.ToInt32(textBox2.Text); } catch {MessageBox.Show("请将 的值输入为数字 请将b的值输入为数字 请将 的值输入为数字"); return;} try {
c=a/b; }章节目录 上一页 下一页
顺序结构程序设计
catch(DivideByZeroException) // 如果发生的异 常为除以0 常为除以 { MessageBox.Show("除数不能为0"); 除数不能为0 除数不能为 return; } MessageBox.Show("整数 与整数 的商为 整数a与整数 整数 与整数b的商为 "+c.ToString()); }
章节目录
上一页
下一页
顺序结构程序设计
14.1.2 try…finally清除异常 清除异常 如果关心的是清除异常而不是错误处理, 如果关心的是清除异常而不是错误处理, 可以使用try…finally清除异常来实现。它不仅 清除异常来实现。 可以使用 清除异常来实现 抑制了出错消息,而且所有包含在finally块中 抑制了出错消息,而且所有包含在 块中 的代码在异常被引发后仍然会被执行。 的代码在异常被引发后仍然会被执行。 尽管程序不正常终止, 尽管程序不正常终止,但还可以为用户获 取一条消息。 取一条消息。 【例14-2】检查文件是否存在,退出时显示“谢 】检查文件是否存在,退出时显示“ 谢您使用本软件” 谢您使用本软件”。 本例中检查文件的存在与否, 本例中检查文件的存在与否,使try…finally 清除异常实现消息的显示。 清除异常实现消息的显示。章节目录 上一页 下一页
顺序结构程序设计
图14-7 文件存在
图14-8 文件不存在
章节目录
上一页
下一页
顺序结构程序设计
【检查】按钮的 检查】按钮的Click事件代码为: 事件代码为: 事件代码为 try { if(File.Exists(textBox1.Text)) { label2.Text="该文件存在 该文件存在"; 该文件存在 } else label2.Text="该文件不存在 该文件不存在"; 该文件不存在 } finally{MessageBox.Show("谢谢您使用本软 谢谢您使用本软 件!");};}章节目录 上一页 下一页
顺序结构程序设计
14.1.3 用try…catch…finally处理所有的异常 处理所有的异常 应用程序最有可能的途径是合并前面两种 理技术——捕获错误、清除并继续执行 捕获错误、 错误处 理技术 捕获错误 应用程序。 应用程序。所有要做的是在出错处理代码中使 语句。 用try-catch-finally语句。 语句 【例14-3】在【例14-1】的基础上,将a或b引发 】 】的基础上, 或 引发 异常的情况合并,无论怎样发生异常,程序都 异常的情况合并,无论怎样发生异常, 将执行finally语句块。 将执行 语句块。 语句块 修改【计算a/b】按钮的Click事件代码为: 事件代码为: 修改【计算 】按钮的 事件代码为 int a=1,b=1, c=1;
章节目录
上一页
下一页
顺序结构程序设计
try { a=Convert.ToInt32(textBox1.Text); b=Convert.ToInt32(textBox2.Text); c=a/b; MessageBox.Show("a/b的值为 的值为 "+c.ToString()); } catch(FormatException) { MessageBox.Show("请将 或b的值输入为数 请将a或 的值输入为数 请将 字"); } 章节目录 上一页 下一页
顺序结构程序设计
catch(DivideByZeroException) { MessageBox.Show("除
数不能为0 "); 除数不能为0 除数不能为 } finally // 清除异常 { MessageBox.Show("无论发生什么异常,我都 无论发生什么异常, 无论发生什么异常 会显示"); 会显示 } }章节目录 上一页 下一页
顺序结构程序设计
14.1.4 抛出异常 当你必须捕获异常时, 当你必须捕获异常时,其他人首先必须首 先能够引发异常。而且,不仅其他人能够引发, 先能够引发异常。而且,不仅其他人能够引发, 你也可以负责引发。 你也可以负责引发。throw方法用于引发一个 方法用于引发一个 异常,当使用该方法时, 异常,当使用该方法时,可以对方法调用时出 现的异常进行描述。如程序中使用下列语句: 现的异常进行描述。如程序中使用下列语句: throw new DivideByZeroException("除数不能为 DivideByZeroException("除数不能为 0!"); ! 则在引发DivideByZeroException异常时显示“除 异常时显示“ 则在引发 异常时显示 数不能为0! 的信息。 数不能为 !”的信息。
章节目录
上一页
下一页
顺序结构程序设计
14.1.5 常用的异常类 给出了System名称空间中常用的异 表14-1给出了 给出了 名称空间中常用的异 常类。 常类。 14.1.6 用户自定义异常 除了预定义的异常外, 除了预定义的异常外,还可以通过继承 Exception创建自己的异常类。 创建自己的异常类。 创建自己的异常类 声明一个异常,格式如下: 声明一个异常,格式如下: class ExceptionName:Exception{} 引发自己的异常的格式如下: 引发自己的异常的格式如下: throw(ExceptionName);章节目录 上一页 下一页
顺序结构程序设计
14.2 跟踪和调试 C#中提供对程序编译的两种辅助手段,用 中提供对程序编译的两种辅助手段, 中提供对程序编译的两种辅助手段 于检查或发现程序中的错误,跟踪和调试。 于检查或发现程序中的错误,跟踪和调试。 14.2.1 跟踪 在.NET中,针对调试检查运行情况和处理 中 错误等方面,提供了两种级别的跟踪服务: 错误等方面,提供了两种级别的跟踪服务:页 面级跟踪及应用程序级跟踪。 面级跟踪及应用程序级跟踪。提供了处理跟踪 和断言的两个类: 和断言的两个类:Trace和Debug,这两个类都 和 , 来自System.Diagnostics命名空间。 命名空间。 来自 命名空间
章节目录
上一页
下一页
顺序结构程序设计
4.2.2 调试 调试是发现并改正程序中错误的过程, 调试是发现并改正程序中错误的过程,在 C#中主要表现在以下几方面: 中主要表现在以下几方面: 中主要表现在以下几方面 输出调试信息。 ① 输出调试信息。 在执行应用程序的过程中,查看并编辑变量。 ② 在执行应用程序的过程中,查看并编辑变量。 暂停程序、 ③ 暂停程序、重新启动程序 ④ 在代码的某个位置自动暂停程序执行 一次
执行程序中的一行代码。 ⑤ 一次执行程序中的一行代码。 在应用程序执行的过程中,监视变量的改变。 ⑥ 在应用程序执行的过程中,监视变量的改变。
章节目录
上一页
下一页