C#—第六章异常处理

1,错误的类型

(1)逻辑错误:输出的结果与预期的不一样,解决办法:设置断点进行调试

(2)语法错误:不符合c#的相关语法知识,解决办法:好好学习语法知识

(3)运行时的错误:出现内存不足或类型不符的错误,解决办法:将危害降到最小

2,解决运行时的错误的被动的办法try-catch

(1)try语句中为出错的代码,catch语句中为解决办法

(2)处理扫尾工作加上finally,比如内存释放。扫尾工作一定回被执行

(3)try-finall语句不能处理异常

(4)try语句的后面可以有多个catch语句,但派生类的catch语句一定在基类catch语句的前面

3,解决运行时的错误的主动的方法throw主动抛出异常,其后跟一个异常类型的对象,主要用途对发生的异常进行描述,system.Exception时所有异常类的基类

4,解决逻辑错误的非中断模式下的调试法

(1)传统调试法:利用辅助语句进行调试

(2)debog类:利用write()的方法来代替传统调试的方法

5,解决逻辑错误中断模式下的调试方法

设置断点,逐过程,逐语句

 

习题练习:

1、错误分为哪三种?分别举一个例子。

语法错误(在语句后面没有加分号)

运行时的错误(内存溢出,读取不存在的文件

逻辑错误(把大于写成了小于,循环少写了一次

2、分别说明解决这几种错误的方法。

语法错误:好好学习语法知识

运行时的错误:设置try-catch语句捕获或者利用调试

逻辑错误:设置断点进行调试,断点,单步运行

3、为什么不能用if语句来解决异常问题?

错误的种类很多,if语句有一定局限性。使用过多的if语句,不能考虑各种情况,效率低,不完美

4、有哪几种异常捕捉结构语句?

try-catch

try-catch-finally

try-finally

5、请说明try-catch-finally三个关键字后分别放什么内容?

try:发生的异常,容易发生运行时错误的代码

catch:解决异常的方法,补救措施代码

finally:扫尾工作无论如何最后都回执行 ,例如关闭文件,释放内存

6、主动触发异常使用什么语句?

throw

7、Exception类包含一个可以被读取的异常信息的描述,对应的属性是什么?可以修改其值吗?

Message  只读属性

8、try后如果有多个catch有没有顺序讲究?

派生类的catch语句必须在基类的catch语句的后面

9、非中断模式下传统调试法使用什么语句?

(1)对于控制台应用程序可以使用“Console.WriteLine()”语句,在命令行窗口查看变量的中间取值

(2)对于windows应用程序可以使用“MessageBox.Show()”语句,在弹出的对话框中查看变量的中间值

(3)对于ASP.NET程序使用“Response.Write()”语句

10、调试的时候,逐语句和逐过程的区别是什么?

跟踪到函数时,逐语句会进入函数体内容逐条执行

                          逐过程不进入函数体内容,而是把函数当作一条语句执行。

一,错误的类型

1,语法错误

定义:违反了c#语言的语法规则

解决方法:好好学习

2,运行时的错误

定义:程序在实际运行时发生的错误,应用程序在调用其他资源或者触发未预料的异常时,导致的错误

解决方法:准备错误处理的预备方案,将错误降到最小

3,逻辑错误

定义:程序已经通过编译并能够顺利运行,但结果与期望的不同。

解决办法:只能通过调试设置断点来手工查找

二,运行时错误的被动处理异常解决方法try-catch语句

1,try-catch 语句的构成

try:装可能发生错误的代码

catch:装错误处理的代码

2,一个try后面可以跟很多的catch

注意:同时使用多个catch语句时,如果其中两个catch语句所捕获的异常类存在继承关系,要保证捕获派生类的catch语句在前,而捕获基类的catch语句在后

3,扫尾工作

1)如释放资源,关闭文件等,不管发没发生意外都要执行,则采用finally来处理扫尾工作

2)不需要参数列表

3)不管有没有异常都被执行。

4)try - catch -finally

5)其中只有try语句有处理 异常的能力,catch/finally都不能处理异常

4,try-finally语句

没有catch,实际不能处理异常

三,运行时错误 的主动处理异常的方法throw

1)使用格式:关键字throw之后跟一个异常类型的对象

2)主要用途:对发生的异常进行描述

3)system.Exception为所有异常类的基类

四,异常处理原则和技巧

1,使用“友好”异常

2,简化异常信息

3,限定异常范围

4,精确捕获 异常

5,在高层次处理异常

6,记录异常

五,逻辑错误中的断点调试中的非中断模式下调试方法

1,传统调试法:利用辅助语句进行调试

2,Debug类:利用一个write()的方法来代替以上传统调试

六,逻辑错误中的断点调试中的中断模式下调试方法

1,设置断点 

2,逐语句

3,逐过程

 

你可能感兴趣的:(C#)