关于VS中的错误处理和调试

关于错误和调试的基本概念

  • 错误

语法错误:比如变量名错误等,导致编译器无法编译,编译器能够实时报错

//语法错误,变量名出错
            int temp = 235;
            tem = 43;

语义错误(逻辑错误):逻辑在某些方面有瑕疵,会导致结果和预想中的不一样,但是能够编译成功,编译器不会报错

//逻辑错误,结果与预期的不同
            int num1 = 34;
            int num2 = 23;
            int sum = num1 * num2;
  • 调试

在调试出错之后,使用VS提供给我们的调试功能,找到错误的原因后修改代码
错误处理:对可能发生错误的地方采取预防措施,并编写弹性代码来处理可能会发生的错误


调试的两种方法

正常模式下的调试
1. VS中我们使用Console.WriteLine(Write)方法向控制台输出变量的值,通过这个我们可以查看变量的值是否符合语句来调试错误。
2. Unity中使用Debug.Log(),Debug.LogError(),Debug.LogWarn()三个方法向unity中的Console窗口输出信息,帮助我们调试错误。

中断模式下的调试
中断模式指我们可以暂停程序的执行,然后查看程序中的状态,也可以让程序继续执行。

断点
我们使用断点来让程序中断。
断点是源代码中自动进入中断模式的一个标记,当遇到断点的时候,程序会进入中断模式。

插入断点有四个方法

  1. 右击要插入断点的代码行,选择breakpoint(断点)->insert breakpoint(插入断点)
  2. 光标定位到代码行,选择菜单上的Debug(调试)->Toggle breakpoint(切换断点)
  3. 光标定位到代码行,按下F9,再次按下F9则取消断点
  4. 在需要添加断点的行首位置,直接单击,再次单击取消断点

中断模式下如何查看以及修改变量的值?
VS中进入中断模式后,会有很多窗口能够监视程序。

  • 局部变量窗口:在这个窗口中,我们可以看到整个方法内所有变量的值和类型
  • 监视窗口:因为在局部变量中,整个方法的变量都显示出来了,而我们可以在这个窗口中输入自己想要查看的变量,可以直接忽略那些无关紧要的变量。
  • 调用堆栈窗口:在这个窗口中,我们可以查看到在这个方法中调用了哪些函数。
  • 即时窗口:在这个窗口中,我们可以查看任意变量的值,还可以修改变量的值。

异常处理(捕捉异常)

处理异常的语法结构如下(包含了三个关键字 try catch finally)

try{

}
catch(){

}
finally{

}

其中catch块可以有0或多个,finally可以有0或1个,但是catch和finally块至少要有一个,也可以同时存在。
当try语句中的一条语句出错,则try块中后面的语句也不会执行。
有一点要注意的是,catch捕捉的异常类型不能够写错,不然程序依旧无法正常运行,或者可以不填,默认捕捉所有的参数。
数组下标越界的例子:

try
{
    int[] array = { 1, 2, 3, 4 };
    int myEle = array[4];
}
//catch(IndexOutOfRangeException e)
//{
//    Console.WriteLine("发生了异常:IndexOutOfRangeException");
//    Console.WriteLine("数组下标越界");
//}
catch(NullReferenceException e) //捕捉异常的类型不对,所以程序依旧无法正常运行
{
    Console.WriteLine("发生了异常");
}
catch //不说明捕捉异常的类型,默认捕捉所有异常
{
    Console.WriteLine("数组下标越界");
}
finally
{
    Console.WriteLine("这里是finally语句");
}

该捕捉什么类型的异常,在以后练习代码的过程中,会慢慢熟悉。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值