1.程序的调试和异常处理
- 几种调试方法
a) CTRL+SHIFT+B 检查语法错误
b) F5 调试
c) CTRL+F5 开始执行、不调试
d) 断点调试 设置断点,局部代码可实现逐步调试
e) 单步调试 F11
- "逐语句"和"逐过程"的差异仅在于它们处理函数调用的方式不同。这两个命令都指示调试器执行下一行的代码。如果某一行包含函数调用,"逐语句"仅执行调用本身,然后在函数内的第一个代码行处停止。而"逐过程"执行整个函数,然后在函数外的第一行处停止。如果要查看函数调用的内容,则使用"逐语句";若要避免单步执行函数,那么最好使用"逐过程"。
2.断点操作:断点是源代码中自动进入中断模式的一个标记,它们可以配置为:
1.在遇到断点时,立即进入中断模式;
2.在遇到断点时,如果布尔表达式的值为true,就进入中断模式;
3.遇到某断点一定的次数后,进入中断模式;
4.在遇到断点时,如果自从上次遇到断点以来变量的值发生了变化,就进入中断模式;
5.把文本输出到调试窗口中,或者执行一个宏.
注意上述功能仅能用于高度程序,如果编译发布程序,就会忽略所有的断点.
添加断点有3种方法:
1) 在要设置断点行旁边的灰色空白中单击
2) 右击设置断点的代码行,在弹出的快捷菜单中选择”断点”/”插入断点”命令,
3) 单击要设置断点的代码行,选择菜单中的”调试”/”切换断点”命令,
插入断点后,就会在设置断点的行旁边空白处出现一个红色圆点,并且该行代码也呈现高亮显示,
删除断点主要有3中方法,分别如下:
ü 单击设置了断点的代码行左侧的红色圆点.
ü 在设置了断点的代码行左侧的红色圆点上单击鼠标右键,在弹出的快捷菜单中选择”删除断点”的命令
ü 在设置了断点的代码行上单击鼠标右键,在弹出的快捷菜单中选择”断点”/”删除断点”命令
3.C#中常见的错误类型,如表:
错误类型 |
说明 |
|
Exception |
应用程序执行期间发生错误 |
|
SystemException |
系统异常 |
所有Exception的基类 |
ArgumentException |
当方法提供的任意一个参数无效时,引发此异常 |
|
ArithmeticException |
算数导致的错误 |
|
DataException |
在使用ADO.NET组件时生成错误 |
System.Data命名空间提供 |
FormatException |
参数的格式不符合被调用方法的参数规范 |
|
IOException |
IO错误 |
System.IO命名空间提供 |
IndexOutOfRangeException |
数组越界 |
|
ArgumentNullException |
空引用传递给无效参数的方法时引发 |
对应JAVA的空指针 |
DivideByZeroException |
0为除数 |
|
OverflowException |
运算结果过大,无法以目标格式保存 |
比如把一个30位数字赋给int |
ApplicationException |
应用程序执行过程中检测到由应用程序定义的异常 |
|
TargetException |
试图调用无效目标时 |
System.Reflection命名空间提供 |
4. 异常既不是臭虫也不是用户错误,在C# 里,异常处理就是C# 为处理错误情况提供的一种机制:Try 块的代码是程序中可能出现错误的操作部分;Catch 块的代码是用来 处理各种错误的部分(可以有多个);Finally 块的代码用来清理资源或执行要在try块末尾执行的其他操作(可以省略)。且无论是否产生异常,Finally块都会执行;甚 至可使用throw语句抛出异常
5. C#中异常都是以类的形式出现的,所有的异常类都是Exception的子类,以下是几个常用的具体异常子类:
a) ArrayTypeMismatchException:当向数组中保存一个与元素类型不兼容的值时,将会抛出该异常。
b) DivideByZeroException:当除数为0时,将会抛出该异常。
c) IndexOutofRangeException:使用超出数组边界的索引时,将会抛出该异常。