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,逐过程