C#(day7)

8 篇文章 0 订阅
异常处理与程序调试


1、异常处理

1.1、为什么需要异常处理

背景:在编写程序时,不仅要关心程序正常运行状况,还应考虑到程序运行时可能发生的各种意外情况,比如网络资源不可用、读写磁盘出错和内存申请失败等,这些都将导致应用程序无法按照预期正常运行。
表述异常的术语:

bug:简言之,有程序员一方引起的错误。例如,对数组的访问超过其范围,就会产生一个bug。
用户错误:不同于bug,用户错误不是由应用程序的编写者引发的,而是由运行程序的用户引起的。
异常:异常往往是运行时的非正常情况,在编程时很难被估计到。异常可能包括试图连接一个不存在的数据库,或者连接当前处于离线状态的机器等。
异常处理实际上就是发生异常时,捕获异常,进行异常处理。


1.2、异常处理机制
异常处理是为了识别和捕获运行时的错误。当程序引发异常时,如果没有适当的异常处理机制,程序将会终止,并使所有已分配的资源保持不变,这样会导致资源泄露。如果要阻止这类情况的出现,需要一个有效的异常处理机制。


1.3、系统的异常类及其使用
在.NET Framework类库中,提供了针对各种异常情况所定义的异常类,这些类包含了异常的相关信息。配合异常处理信息,应用程序就轻易地避免程序运行时可能中断应用程序的各种错误。用来表示问题的类型是一个继承自(或派生自)System.Exception的类,异常类继承的层次结构如图所示:

.Net Framwork类库中有两种类型异常:执行程序生成的异常和公共语言运行库生成的异常。Exception是异常的基类。若干个异常类直接从Exception继承,其中包括ApplicationException和SystemException。这两个类构成几乎所有运行库异常的基础。

除了Exception类之外,还定义了很多其他的派生类。在异常捕获时,可按某些条件对异常进行筛选,仅捕捉特定类型的异常。在异常处理中,尽量使用接近的异常类去捕获。比如,遇到可能会发生数组下标越界的情况,使用IndexOutOfRangeException类去捕获,而不是一律使用Exception类。


1.4、try/catch/finally语句块

try+catch语句块:

try+catch+finally块:


1.5、抛出异常:

异常可以由公共语言库(CLR)、第三方库或使用throw关键字的应用程序抛出。
当程序存在无法完成指定任务的情况时,就应该引发异常。throw语句用于发出在程序执行期间出现异常的信号。通常,throw语句与try/catch/finally语句一起使用。当引发异常时,程序查找处理此异常的catch语句。throw语句的基本语法格式如下:
throw exObject
其中,exObject表示要抛出的异常对象,它是派生自System.Exception类的对象。




2、程序调试
2.1、断点设置
2.11、插入断点
①在代码编辑器中,单击需要插入断点的行左侧的灰色空白处
②在代码编辑器中,选定需要插入断点的行,按下F9键
③在代码编辑器中,选定需要插入断点的行,单击鼠标右键,在弹出的快捷菜单中执行“断点-->插入断点”命令。

2.12、删除断点
①在代码编辑器中,再次单击插入断点的行左侧的深红色圆点
②在代码编辑器中,选定需要删除断点的行,按下F9键
③在代码编辑器中,选定需要插入断点的行,单击鼠标右键,在弹出的快捷菜单中执行“断点-->删除断点”命令。
2.13、编辑断点
在代码编辑器中,右键单击断点,在弹出的快捷菜单中执行“条件”命令,弹出“断点条件”对话框,用户在文本框中输入一个逻辑表达式来中断或继续程序。

2.14、启动调试
①从“调试”菜单中执行“启动调试”命令
②按下F5键
③单击标准工具栏中的“启动调试”按钮

2.15、中断调试
在中断模式下,用户可以检查程序的状态,以查看是否存在冲突或bug。

2.16、继续调试
①从“调试”菜单中执行“继续”命令
②按下F5键
③单击标准工具栏中的“启动调试”按钮

2.17、停止调试
①从“调试”菜单中执行“停止调试”命令
②按快捷键Shift+F5键
③单击调试工具栏中的“停止调试”按钮

2.18、单步调试
①从“调试”菜单中执行“逐语句”命令
②按下F11键
③单击调试工具栏中的“逐语句”按钮
2.19、执行到指定位置

2.2、监视调试状态
在中断模式下,用户可以检查变量的值、寄存器的值、内存空间情况、断点的命中次数和线程的状态等信息,以查看是否存在冲突或bug。
2.21、提示文本
2.22、局部变量窗口
2.23、自动窗口
2.24、监视窗口
2.25、输出窗口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值