异常机制

来源:互联网 发布:淘宝食品网 编辑:程序博客网 时间:2024/04/30 22:56

C++,JAVA,PYTHON……总结一下,异常机制似乎是OOP语言的一个特性,JAVA与PYTHON中对使用异常处理的态度甚至是强制的。

 

为什么一定要引进异常机制,而不用传统而简单的“检查返回值”机制,Google之,查书之,答曰:

 

* 异常可以强制程序员进行错误处理。(可以吗?噢,对,JAVA中强制需要try catch,否则编不过,但并非每个语言都那样)

   我想,本质上,程序员进不进行错误处理,是语言无关的,语言再怎么强制,如果你懒得处理,总可以找到绕道的方法。

 

* 异常机制可以简化出错时资源的回收。

 

* C++的构造函数可以抛出异常,而且在函数栈中只有构造了的对象才会被自动析构。(我们可以采用“二次构造” + 返回值检查的方法来达应对

   初始化异常的情况,而且代码非常明了)

 

* 检查返回值的错语处理方案是建立在约定上的,本身不属于语言层面

 

* 异常处理的一个很大的目标是把异常处理代码从异常发生的地方移开,使你集中精力去解决你想解决的问题,然后再到另一个地方处理异常的问题。

 

* 每次调用的时候都必须测试条件,并判断返回结果,这使得程序难以阅读,并且还可能会降低运行效率,因此程序员们都不愿意使用异常信号,也不愿意去处理异常了

 

此外,C++中异常会增大程序的开销,对于这个问题,C++编程思想上解释道,只有出错的部分才走缓慢的异常处理栈跳转,正常代码是不会受到

特别大的影响。当然,编译出来的程序体积是要大点,大多少呢?曰:“典型情况下5%-15%的空间开销”

 

 

讨论此话题的意义在于,我是否有需要把经典的C++的错误处理模式改成"异常处理",或者只是从中借鉴一点

原创粉丝点击