奇酷教育 · Unity游戏/VR/AR入门教材

VR开发入门教程33:控制台编程--异常来源:m.qikuedu.com

异常实际上是程序中错误导致中断了正常的指令流的一种事件.也叫例外机制。

我们以三种对代码不一样的处理方式来看一看异常的优点:
没有处理错误的程序:
 read-file {
     openTheFile;
     determine its size;
     allocate that much memory;
     closeTheFile;  
}
以常规方法处理错误
openFiles;
if (theFilesOpen) {
  determine the lenth of the file;
  if (gotTheFileLength){
    allocate that much memory;
    if (gotEnoughMemory) {
       read the file into memory;
       if (readFailed) errorCode=-1;
       else errorCode=1;
    }else  errorCode=-3;
  }else errorCode=-5 ;
 }else errorCode=-5;
 
观察前面的程序你会发现大部分精力花在出错处理上了.
只把能够想到的错误考虑到,对以外的情况无法处理
程序可读性差
出错返回信息量太少
 
用异常的形式处理错误
read-File;
{ try {
    openTheFile;
    determine its size;
    allocate that much memory;
    closeTheFile;
 }catch(fileopenFailed) { dosomething; }
  catch(sizeDetermineFailed) {dosomething;}
  catch(memoryAllocateFailed){ dosomething;}
  catch(readFailed){ dosomething;}
  catch(fileCloseFailed) { dosomething; }
  catch(Exception) {dosomething;}  //其它未考虑到的错误
 
综合上面的说法和传统的方法比较异常的优点:
1.把错误代码从常规代码中分离出来
2.把错误传播给调用堆栈
3. 按错误类型和错误差别分组
4. 系统提供了对于一些无法预测的错误的捕获和处理
5. 克服了传统方法的错误信息有限的问题

异常的使用场景

什么情况下使用例外机制?
1.当方法因为自身无法控制的原因而不能完成其任务文件不存在,网络连接无法建立……
2.处理在方法、类库、类中抛出的异常,如FileInputStream.read产生IOException
3.在大的项目中采用统一的方式处理例外时
     如编写一个文字处理器
4.例外应该是不经常发生但却可能发生的故障
     一定发生的事件不应该用例外机制来处理
5.例外处理用于使系统从故障中恢复
     提示信息/不产生无效的结果/释放资源
 
注意事项:
1.不同的例外处理策略
     关键性应用(处理所有例外)
     实验软件(可以忽略许多例外)
2.终止程序会导致资源泄漏,利用例外处理释放资源
3.尽可能近地处理例外,这样程序清晰易读
4.能在局部处理的错误不要使用例外机制,例外机制的处理比正常处理效率低。
示例:
using System;
class ExcepTest
{  
   public static void Main(String[] args)
   {  
       int b=0;
       int a;      
       try {
         a=5/b;
       }
       catch(ArithmeticException e)
       {   
         Console.WriteLine("divided by 0");
       }  
   }
}

推荐课程

* * * *

添加导师QQ:3053383067;2165190773在线报名
全国统一服务热线:400-807-8991