异常处理和注意事项
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ OverflowException进行算术运算、类型转换或转 换操作导致溢出的异常;
➢ ApplicationException:是第三方定义的异常基 类 ,此异常只能由用户程序引发,而不能由系统引 发。
12.1.2 捕获异常方式
➢错误发现方式 : ➢使用调试器测试:通常每种开发语言环境
都有调试器,并且都方便实用。 ➢单元测试:即针对程序模块进行的测试。 ➢集成测试:也称为联合测试或组装测试。 ➢确认测试:也称为有效性测试Байду номын сангаас确认测试
第12章 异常处理和注意事项
➢12.1 错误和异常处理 ➢12.2 C#编程规则 ➢12.3 小结
12.1 错误和异常处理
➢错误可以分为以下3类。 ➢语法错误:程序代码的编写中,没有按照
规定的语法则会产生语法错误。
➢逻辑错误:程序逻辑处理出现的错误。逻 辑错误会导致实际处理结果和预测结果不 相符。
错误处理模块 }
12.1.2 捕获异常方式
➢ 示例:
static void Main(string[] args) {
int[] a = new int[5]; try {
a[10] = 1; } catch (Exception e) {
Console.WriteLine("数组访问错误,{0}", e.Message); } Console.ReadLine(); }
➢ 断点管理窗口:该窗口列出了所有断点,其 中每一行都代表一个断点,每个断点都由所 在文件、条件、命中次数等项来描述。
➢ 自动窗口:必须在调试运行时才能打开 , “自动窗口”自动跟踪运行光标的当前行和 下一行的变量,显示变量列表和变量当前值。 “自动窗口”的变量是系统自动跟踪的,无 需自行添加。而且,当运行光标所在语句行 有方法调用时,“自动窗口”将显示该方法 以及包含该方法调用的所有方法的返回值。
12.1.3 自定义异常处理类
➢ throw使用示例:
static void Main(string[] args) {
try {…….
if(i>a.Length) throw new IndexOutOfRangeException(); a[i]=int.Parse(Console.Readline()); }
➢运行时错误:该错误通常表现为内存泄露、 以零作除数等,这些异常会在运行时出现, 难以确定错误起因。
12.1.1 异常处理类
➢Exception是异常类的基类。 ➢Exception类的常用属性:Message、
Data、Source、StackTrace等。 ➢异常类中最重要的属性就是Message属性
12.1.3 自定义异常处理类
➢ 自定义异常类语法形式如下。
public class UserMessageException :ApplicationException {
public UserMessageException(String msg):base(msg) {} }
➢ 对于自定义异常处理类,需要人为引发异常, 因此需要使用throw关键字显式引发异常。
通常也使用黑盒测试方式,需要根据用户 的需求输入一些数据,以检查软件是否可 以正常运行。
12.1.2 捕获异常方式
➢ 使用调试器进行调试的方式:
➢ 断点:是程序执行暂停的地方。3个方法设置断点,在 菜单栏中单击【调试】|【新建断点】命令,或者在行 的最左边单击,或者按【F9】键。只需再执行一遍和 设置断点相同的操作即可取消断点。
12.1.2 捕获异常方式
➢ 结构化异常处理 :对于结构化异常处理,使用 try catch语句结构来捕获和处理错误 。如果进 行了异常处理,那么CLR将调用异常处理代码; 如果未进行异常处理,那么CLR会终止程序的 执行并弹出错误提示窗口。其语法形式为:
try {
正常处理模块 } Catch(Exception e) {
//错误信息
public EmailException(string msg, string name): base(msg) //构 造函数
ApplicationException
TargetException DivideByZeroException
OverflowException
12.1.1 异常处理类
➢ 常用系统异常类:
➢ OutOfMemoryException:没有足够的内存继续 执行程序引发的异常;
➢ InvalidCastException:因无效类型转换或显式转 换引发的异常;
和StackTrace属性。Message属性中包含 了出错的原因。 StackTrace属性记录了出 错的详细方法名称。
➢异常可由系统抛出,也可由客户程序使用 throw关键字引发
12.1.1 异常处理类
➢ 异常继承体系:
Exception
SystemException
IOException DataException ArthmeticException InvalidCastException XmlException
12.1.2 捕获异常方式
➢局部变量窗口:局部变量窗口跟踪当前局部范 围内所有变量,跟踪的局部范围就是该方法的 作用范围,也就是说局部变量窗口可以显示方 法内出现的所有变量。
➢监视窗口:可以自定义要跟踪的变量 。 ➢即时窗口:“即时窗口”可以不在调试时执行。
如果在调试中执行,在“即时窗口”里可以计 算表达式、执行语句、跟踪变量等。
➢ 执行光标:执行光标一般黄色的,用于标识程序当前 运行到的行。
➢ 调试工具栏:是包含调试时的常用命令的工具栏 ,包 括启动调试、全部中断、停止调试、重新启动、显示 下一语句、逐语句、逐过程和跳出命令按钮。
➢ 断点管理窗口 ➢ 自动窗口 ➢ 局部变量窗口 ➢ 监视窗口 ➢ 即时窗口
12.1.2 捕获异常方式
catch(System.IndexOutOfRangeException e) {
//数组越界异常 } }
12.1.3 自定义异常处理类
➢ 自定义异常类使用示例:
class EmailException : Exception
{
string errorname;
//出错人姓名
string errmsg;
➢ ApplicationException:是第三方定义的异常基 类 ,此异常只能由用户程序引发,而不能由系统引 发。
12.1.2 捕获异常方式
➢错误发现方式 : ➢使用调试器测试:通常每种开发语言环境
都有调试器,并且都方便实用。 ➢单元测试:即针对程序模块进行的测试。 ➢集成测试:也称为联合测试或组装测试。 ➢确认测试:也称为有效性测试Байду номын сангаас确认测试
第12章 异常处理和注意事项
➢12.1 错误和异常处理 ➢12.2 C#编程规则 ➢12.3 小结
12.1 错误和异常处理
➢错误可以分为以下3类。 ➢语法错误:程序代码的编写中,没有按照
规定的语法则会产生语法错误。
➢逻辑错误:程序逻辑处理出现的错误。逻 辑错误会导致实际处理结果和预测结果不 相符。
错误处理模块 }
12.1.2 捕获异常方式
➢ 示例:
static void Main(string[] args) {
int[] a = new int[5]; try {
a[10] = 1; } catch (Exception e) {
Console.WriteLine("数组访问错误,{0}", e.Message); } Console.ReadLine(); }
➢ 断点管理窗口:该窗口列出了所有断点,其 中每一行都代表一个断点,每个断点都由所 在文件、条件、命中次数等项来描述。
➢ 自动窗口:必须在调试运行时才能打开 , “自动窗口”自动跟踪运行光标的当前行和 下一行的变量,显示变量列表和变量当前值。 “自动窗口”的变量是系统自动跟踪的,无 需自行添加。而且,当运行光标所在语句行 有方法调用时,“自动窗口”将显示该方法 以及包含该方法调用的所有方法的返回值。
12.1.3 自定义异常处理类
➢ throw使用示例:
static void Main(string[] args) {
try {…….
if(i>a.Length) throw new IndexOutOfRangeException(); a[i]=int.Parse(Console.Readline()); }
➢运行时错误:该错误通常表现为内存泄露、 以零作除数等,这些异常会在运行时出现, 难以确定错误起因。
12.1.1 异常处理类
➢Exception是异常类的基类。 ➢Exception类的常用属性:Message、
Data、Source、StackTrace等。 ➢异常类中最重要的属性就是Message属性
12.1.3 自定义异常处理类
➢ 自定义异常类语法形式如下。
public class UserMessageException :ApplicationException {
public UserMessageException(String msg):base(msg) {} }
➢ 对于自定义异常处理类,需要人为引发异常, 因此需要使用throw关键字显式引发异常。
通常也使用黑盒测试方式,需要根据用户 的需求输入一些数据,以检查软件是否可 以正常运行。
12.1.2 捕获异常方式
➢ 使用调试器进行调试的方式:
➢ 断点:是程序执行暂停的地方。3个方法设置断点,在 菜单栏中单击【调试】|【新建断点】命令,或者在行 的最左边单击,或者按【F9】键。只需再执行一遍和 设置断点相同的操作即可取消断点。
12.1.2 捕获异常方式
➢ 结构化异常处理 :对于结构化异常处理,使用 try catch语句结构来捕获和处理错误 。如果进 行了异常处理,那么CLR将调用异常处理代码; 如果未进行异常处理,那么CLR会终止程序的 执行并弹出错误提示窗口。其语法形式为:
try {
正常处理模块 } Catch(Exception e) {
//错误信息
public EmailException(string msg, string name): base(msg) //构 造函数
ApplicationException
TargetException DivideByZeroException
OverflowException
12.1.1 异常处理类
➢ 常用系统异常类:
➢ OutOfMemoryException:没有足够的内存继续 执行程序引发的异常;
➢ InvalidCastException:因无效类型转换或显式转 换引发的异常;
和StackTrace属性。Message属性中包含 了出错的原因。 StackTrace属性记录了出 错的详细方法名称。
➢异常可由系统抛出,也可由客户程序使用 throw关键字引发
12.1.1 异常处理类
➢ 异常继承体系:
Exception
SystemException
IOException DataException ArthmeticException InvalidCastException XmlException
12.1.2 捕获异常方式
➢局部变量窗口:局部变量窗口跟踪当前局部范 围内所有变量,跟踪的局部范围就是该方法的 作用范围,也就是说局部变量窗口可以显示方 法内出现的所有变量。
➢监视窗口:可以自定义要跟踪的变量 。 ➢即时窗口:“即时窗口”可以不在调试时执行。
如果在调试中执行,在“即时窗口”里可以计 算表达式、执行语句、跟踪变量等。
➢ 执行光标:执行光标一般黄色的,用于标识程序当前 运行到的行。
➢ 调试工具栏:是包含调试时的常用命令的工具栏 ,包 括启动调试、全部中断、停止调试、重新启动、显示 下一语句、逐语句、逐过程和跳出命令按钮。
➢ 断点管理窗口 ➢ 自动窗口 ➢ 局部变量窗口 ➢ 监视窗口 ➢ 即时窗口
12.1.2 捕获异常方式
catch(System.IndexOutOfRangeException e) {
//数组越界异常 } }
12.1.3 自定义异常处理类
➢ 自定义异常类使用示例:
class EmailException : Exception
{
string errorname;
//出错人姓名
string errmsg;