【实用小知识点】Unity中异常处理try catch使用

  • Post author:
  • Post category:其他


异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。

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 版权协议,转载请附上原文出处链接和本声明。