C++的try-catch,和Java、Javascript的异常处理,性质是不一样的

C++的try-catch,只能捕获在代码中主动throw出去的错误

对于空指针,野指针,内存越界等不在预料之中的错误,是没办法捕获的

所以C++的异常机制,更多时候是为了方便处理可预见的异常,对于程序崩溃是没太大效果的

这就是为什么很多人不建议在C++中使用try-catch的原因,它有点用,但好像又没太大用,地位比较尴尬

但是C语言是底层语言,很多时候都是直接和内存打交道

出了致命问题,就算程序不崩溃,再继续运行,也会有很多未知的隐患

不像Java等高级语言,它们设计了一套严格的内存管理和对象使用机制,保证了内存的安全性,但是也极大地付出了性能代价

其实我们所谓的Java智能,Java简单,Java安全,都是以牺牲性能为代价的

用惯了高级语言,享受其便利性的同时,我们也要体谅下,基础语言的痛楚

设计一套专门的内存安全机制,每个对象创建、销毁、使用都要经过这套机制的管理,这样的成本,已经完全超越了创建、销毁、调用对象本身的成本了,如果C语言这样去弄,那它的高效性也就不复存在了

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐