C++的try-catch,和Java、Javascript的异常处理,性质是不一样的
C++的try-catch,只能捕获在代码中主动throw出去的错误
对于空指针,野指针,内存越界等不在预料之中的错误,是没办法捕获的
所以C++的异常机制,更多时候是为了方便处理可预见的异常,对于程序崩溃是没太大效果的
这就是为什么很多人不建议在C++中使用try-catch的原因,它有点用,但好像又没太大用,地位比较尴尬
但是C语言是底层语言,很多时候都是直接和内存打交道
出了致命问题,就算程序不崩溃,再继续运行,也会有很多未知的隐患
不像Java等高级语言,它们设计了一套严格的内存管理和对象使用机制,保证了内存的安全性,但是也极大地付出了性能代价
其实我们所谓的Java智能,Java简单,Java安全,都是以牺牲性能为代价的
用惯了高级语言,享受其便利性的同时,我们也要体谅下,基础语言的痛楚
设计一套专门的内存安全机制,每个对象创建、销毁、使用都要经过这套机制的管理,这样的成本,已经完全超越了创建、销毁、调用对象本身的成本了,如果C语言这样去弄,那它的高效性也就不复存在了