如果我在未经管理的C++、Visual Studio 2008或更高版本中创建一个新项目,那我应该选择哪种异常处理模型呢?
我知道/EHa选项会导致代码效率降低,并且也会捕获SEH异常, 对吗?
因此,我一直避免使用该选项,通常选择/EHsc选项,这样我只会捕获实际抛出的C ++异常,而不会在catch(...)处理程序中捕获访问冲突和其他结构化异常。如果我的代码中发生访问冲突,我不希望它被catch(...) {}掩盖。
我和其他人一起编写代码时,他们希望catch(...) {}什么也不干,甚至在发生访问冲突时也要这样做,这对我来说似乎是一个非常糟糕的想法。如果由于糟糕的编码而导致错误,您不希望将手指塞进耳朵并大声说“La la la la la!”以便您不必让程序崩溃吗?实际上,如果由于编码错误而现在处于不良状态,则真的希望代码继续运行吗?
因此,我的总体想法是,/EHa会创建更大/更慢的代码,并允许程序员逃避编写代码,即使存在致命错误,它也将继续以未定义的状态运行。
顺便说一下,我谈论的是应用程序和服务代码,这是我们大部分时间编写的内容。而不是低级设备驱动程序或其他类似的东西。
请发表您的想法。