(个人总结,不全面)
1. 【C++】没有finally,只有RAII(资源申请即初始化,即栈分配对象的析构函数)或std::auto_ptr/boost::shared_ptr(即堆分配对象的析构函数),借助析构函数的能力来实现,see http://topic.csdn.net/t/20060610/10/4813049.html
【Java】支持finally,期望程序员在finally中显式地释放系统资源。
结论:Java的异常写法更清晰,而C++的异常较隐晦和自动)。
2. 【C++】强调异常安全性(既要求资源正确释放,还要求在函数被中止抛出时保护类成员变量的不变式)
【Java】同样强调异常安全,但更侧重于资源释放,较少会顾及类的不变式(因为大多数操作是在临时的堆变量上)或者总是会检查类的不变式。(有些Java书把异常安全性称为异常原子性)
结论:Java的异常比C++的写法更随意,不需要重新抛出异常。
3. 【C++】异常不一定要明确catch
【Java】异常不catch可能会导致编译失败
结论:C++认为绝大部分情况下异常不会发生(也不必要)。Java大量使用异常可能是因为内部有众多分散的模块,以及虚拟机自身的不稳定。Java需要一种清晰而且高效的控制方式及时地处理异常,但C++认为只有标准库那样子复杂才有必要。
4. 【C++】没有强制的异常基类,捕获所有异常可以用catch(...)
【Java】用户异常必须继承自Exception,捕获所有异常则是用catch(Throwable x)(包括JVM内部错误Error异常、可以用编译器消除的RuntimeException异常,和用户定义的Exception派生类异常)
结论:C++可以抛出各种类型的变量,Java则严格规定三类异常:Error、RuntimeException和Exception的派生类(Exception也是RuntimeException的基类)。C++的运行期错误处理比Java的写法要宽松。
C++和Java都希望用户自己定义异常类以使异常处理更高效和准确。
(待补充)
分享到:
相关推荐
简单,易懂的方式讲解C++与java异常处理的方法,两者的异同
C++ Java异常处理比较
C++和Java多态的区别
C++和java的区别,包括语法区别和高级区别,让你比较容易的从JAVA转入C++开发或者从C++转入JAVA,难得的经典
Android Studio项目,此Demo实现Java调用C++函数,然后C++函数回调Java方法、纯C++直接调用Java方法,此为github地址链接
C++转换JAVA工具,安装工具,验证可用
超强的C++ to Java转换工具!!希望对大家有帮助。无污染。
较为详细的,全面的分析了C c++和java 的区别,适合初学者参阅。
CPlus_to_Java_Converter(C++转java);C++转java软件
C++代码转java工具 C++代码转java工具 C++代码转java工具
通过代码和问题详细说明c++和java互调方法
JAVA与C++的区别JAVA与C++的区别JAVA与C++的区别JAVA与C++的区别JAVA与C++的区别
包括c++和java区别、50个C、C++面试题、C语言笔试面试题(最全)、C语言面试题汇总、Java方面、JAVA相关基础知识、Java学习笔记(必看经典)、常见Java面试题和答案、华为笔试题大全(史上最齐全)、经典的软件测试面试题...
java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket java c++ socket
面向对象编程C++和Java比较教程,绝版书吧,中文版和英文版PDF都有,英文很清晰,中文比较清晰,适合C++转Java或者Java转C++的程序员
C++转Java工具,对于研究jni开发很有帮助
在Qt平台C++和Java代码的交互。更多Qt文章,请看http://blog.csdn.net/u014597198/article/category/5692117
java和c++语法区别语法上的比较,也举出了一些相同点
汇编语言与计算机体系结构:使用C++和Java(Assembly Language and Computer Architecture Using C++ and Java) 配套代码
The diffenences bwtween Java and C++ (JAVA与C++区别) 内容英文