[C++语法语义探讨] C++异常会极大地影响效率?

wzgme 2007-06-28
qiezi 写道
systembug 写道
Windows下的SEH,需要保存相关的堆栈数据,循环这么多次肯定垮掉。
而且Windows层面的异常处理与Java在根本上的不一样。就像java不用指针一样,如果没有必要不要使用异常。

我是有点奇怪,难道循环结束一次不是会退出一个作用域?下次循环应该是重新进入,堆栈清理不干净?


简单的理解,C++异常处理是在编译的时候就确定了的。运行时候是调入,每一次异常查一次异常堆栈表,循环这么多次,那自然太大了。

systembug 2007-06-29
Java有垃圾回收机制,这个机制在运行是能自行管理。而Windows程序中资源异常处理的释放是要由程序自己来完成。这就是使用c++开发程序时比较难的地方,你需要了解操作系统的运转机制。因此如果无此必要不要贸然使用异常处理机制。具体的SEH结构在www.codeproject.com有专门的文章进行讨论。
iunknown 2007-07-04
bigpanda 写道
搭个顺风车问一下有什么资料讲编译器怎么实现exception的没有?

在Win32上是用Windows的SEH,那么又纳闷Windows是怎么实现SEH的。


http://en.wikipedia.org/wiki/Longjmp

The typical use for setjmp/longjmp is for exception handling — by calling longjmp, the program can jump out of many levels of nested function calls without having to go to the trouble of setting flag variables which need to be checked in each function.
Global site tag (gtag.js) - Google Analytics