1. 错误信息打印
IDE | 操作 |
---|---|
VS | Console.Write(); Console.WriteLine(); |
Unity | Debug.Log(“”); Debug.LogError(“”); Debug.LogWarn(“”) |
2. 断点
点击调试-窗口-断点,这个窗口显示了所有断点。
3. 监视变量
在中断模式下,通过调用堆栈和即时窗口查看
窗口 | 描述 |
---|---|
调用堆栈窗口 | 我们可以观察到当前代码执行到哪一行了,并且可以看到这个代码的是被什么语句调用的 |
即时窗口 | 输入变量名—-查看变量的值,给变量赋值——-修改变量的值,输入表达式查看结果 |
4. 错误异常
try
{
//可能出现异常的语句
//若try中一行发生异常,那么接下来的代码就不执行
}
catch( <exceptionType> e )
{
//异常出现以后并且异常被捕获;如果catch块的参数不写,表示发生任何异常都执行这个catch块
}
catch
{
//捕获所有异常
}
finally
{
//始终会执行
}
其中catch块可以有0或者多个,finally可以有0或者1个
但是如果没有catch块,必须有finally块,没有finally块,必须有catch块,catch块和finally块可以同时存在
5.异常类
System.ApplicationException 和 System.SystemException 类是派生于 System.Exception 类的异常类。
System.ApplicationException 类支持由应用程序生成的异常。所以程序员定义的异常都应派生自该类。
System.SystemException 类是所有预定义的系统异常的基类。
常见的异常类
异常类 | 描述 |
---|---|
System.IO.IOException | 处理 I/O 错误 |
System.IndexOutOfRangeException | 处理当方法指向超出范围的数组索引时生成的错误 |
System.ArrayTypeMismatchException | 处理当数组类型不匹配时生成的错误 |
System.NullReferenceException | 处理当依从一个空对象时生成的错误 |
System.DivideByZeroException | 处理当除以零时生成的错误 |
System.InvalidCastException | 处理在类型转换期间生成的错误 |
System.OutOfMemoryException | 处理空闲内存不足生成的错误 |
System.StackOverflowException | 处理栈溢出生成的错误。 |
System.Exception | 处理所有异常 |
6. 自定义异常
//1. 定义异常类。继承自ApplicationException
//2. 在自定义的类中逻辑语句,抛出(throw 异常类)异常
//3. 调用该自定义类时,遇到异常,自动抛出,捕获异常
namespace UserDefinedException
{
class TestTemperature
{
static void Main(string[] args)
{
Temperature temp = new Temperature();
try
{
temp.showTemp();
}
catch(TempIsZeroException e)
{
Console.WriteLine("TempIsZeroException: {0}", e.Message);
}
Console.ReadKey();
}
}
}
public class TempIsZeroException: ApplicationException
{
public TempIsZeroException(string message): base(message)
{
}
}
public class Temperature
{
int temperature = 0;
public void showTemp()
{
if(temperature == 0)
{
throw (new TempIsZeroException("Zero Temperature found"));
}
else
{
Console.WriteLine("Temperature: {0}", temperature);
}
}
}