异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。
try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。
catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。
finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。
throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。
try catch可以用在可能发生异常的地方,如何通过备用方法来保证能执行下去。也可以用来捕捉异常。或者说某个异常会中断程序执行,但暂时不处理,可以先try catch如何打印出错误,回过头来再去解决。
try
{
// 这里写可能引起异常的语句
}
//
catch( Exception e )
{
// 当try中的语句发生异常时,错误处理代码(相当于备用方案)
Debug.Log(e.Message);//这边啥错误打印出来,
}
finally//这个也可以不写
{
// 这里面是不管异常不异常都会执行的语句
}
异常类 | 描述 |
---|---|
System.IO.IOException | 处理 I/O 错误。 |
System.IndexOutOfRangeException | 处理当方法指向超出范围的数组索引时生成的错误。 |
System.ArrayTypeMismatchException | 处理当数组类型不匹配时生成的错误。 |
System.NullReferenceException | 处理当依从一个空对象时生成的错误。 |
System.DivideByZeroException | 处理当除以零时生成的错误。 |
System.InvalidCastException | 处理在类型转换期间生成的错误。 |
System.OutOfMemoryException | 处理空闲内存不足生成的错误。 |
System.StackOverflowException | 处理栈溢出生成的错误。 |
catch( Exception e )是try出现异常都会进入这个catch。
而上表这些相当于更细分的各种情况异常,因为( Exception e )包含了上图中这些异常所以( Exception e )和这些不能一起写。
int x = 1, y = 0;
int[] A = new int[] { 1, 2 };
try
{
//Debug.Log(A[10]);//对应数组越界情况
Debug.Log(x / y);//对应除以0情况
}
catch (IndexOutOfRangeException e)
{
Debug.Log("处理当方法指向超出范围的数组索引时生成的错误。\n" + e.Message);
}
catch (DivideByZeroException e)
{
Debug.Log("处理当除以零时生成的错误。。\n" + e.Message);
}
版权声明:本文为qq_40569889原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。