打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#的调试和错误处理
再优秀的程序员在编程的过程中也会犯些错误,何况是我们这些初级程序学者;好的程序员会找出一些错误并修改它们.有时候程序中存在一些微妙的错误我们发现不了的时候就得跟踪代码进行调试.
一.Visual Studio中的调试
在调试模式下运行程序时,运行的是编写好的代码.调试程序的信息在VS执行每行代码过程中发生了甚么都有记录,这些信息保存在Debug目录下的.pdb格式文件中.
在运行期间把文本写入Output窗口是非常简单的.此时可以使用一下两个命令:
Debug.WriteLine()
Trace.WriteLine()
这两个命令函数的使用方法差不多,区别在第一个命令是在调试模式下运行而第二个还可以用于发布程序.引用这两个函数还要在命名空间中加入: using System.Diagnostics;
static int MaxNum(int[] a)//
{
Debug.WriteLine("sort array begin");
int max = a[0];
int index;
for (int i = 1; i < a.Length; i++)
{
if (max < a[i])
{
max = a[i];    //中断点设计
index = i;
}
}
Trace.Write("the index of the bigest number is");
return max;
其实有关调试的问题都可以自己解决,只有那些专门研究程序运行过程实现的人才会去关注Debug的过程,一般我们在发现程序没有错误可以运行的时候就不关心具体的执行过程.
二.异常处理.
在程序运行过程中存在异常,例如在打开文件的时候要判断文件是否存在才能打开,如果不存在就可能引起异常导致程序中止.如果可能存在异常就要用一下的方法处理.,以保证程序正常运行.
try
{
<可能包含异常的执行过程>
}
catch(Exception 捕获异常)
{
<异常处理>
}
finally{<最终会做甚么>
}
异常的类型:1基本Exception.2: Application Exception类
3 与参数有关的异常类: ArgumentException类Format Exception类:
4: 与成员访问有关的异常MemberAccessException类,该类包括三种子类
FileAccessException类: MethodAccessException类:
MissingMemberException类:
下来的例子在数据处理过程中很常见.
int x1 = 40;
int x2 = 0;
int x3;
Label re = new Label();
re.Text=Convert.ToString(x1/x2)
执行结果是
Try---catch---finally的异常处理模式是这样的执行的.
Try是程序意图做甚么,Catch是捕获Try过程中可能出现的异常,如果有异常的话而且异常和Catch的类型一样,Catch处理异常.finally中的代码不管有没有异常都会执行.当然可以有多个Catch来处理捕获程序执行过程中可能出现的多个异常.
这里就不多说了.下面列举出C#处理过程中存在的不同异常类型.,
MemberAccessException                           访问错误:类型成员不能被访问
ArgumentException                               参数错误:方法的参数无效
ArgumentNullException                           参数为空:给方法传递一个不可接受的空参数
ArithmeticException                             学计算错误:由于数学运算导致的异常,覆盖面广。
ArrayTypeMismatchException                      数组类型不匹配
DivideByZeroException                           被零除
FormatException                                 参数的格式不正确
IndexOutOfRangeException               索引超出范围,小于0或比最后一个元素的索引还大
InvalidCastException                            法强制转换,在显式转换失败时引发
MulticastNotSupportedException                  不支持的组播:组合两个非空委派失败时引发
NotSupportedException                           调用的方法在类中没有实现
NullReferenceException                          引用空引用对象时引发
OutOfMemoryException                            无法为新语句分配内存时引发,内存不足
OverflowException                               溢出
StackOverflowException                          栈溢出
TypeInitializationException                     错误的初始化类型:静态构造函数有问题时引发
NotFiniteNumberException
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#中的异常捕获机制(try catch finally)
捕捉错误(2)
处理WCF异常的方式
C语言C++中assert的用法
Trace 和Debug WriteLine 方法
C#委托(delegate、Action、Func、predicate)和事件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服