1、从规范角度分析,一般是禁止使用C++的异常机制的。
2、要求所有的错误都应该通过错误值在函数间传递病做相应的判断,而不应该通过异常机制进行错误处理。
3、编码人员必须完全掌控自己的整个编码过程,要有攻击者思维,主动把握有可能出错的环节,尽可能的分析出程序的所有异常,增强安全编码意识。
4、使用c++异常机制的一些缺点:
(1)、增加开销,依赖于编译器、操作系统、处理器等,程序的性能有比较明显的下降,这个是不建议使用的最主要的原因;
(2)、削弱编码人员的安全意识;
(3)、打乱程序的正常执行流程,增加结构复杂度;
(4)、资源释放不彻底,可能会导致内存泄漏;
(5)、降低代码复用率,使用了异常机制的代码,不能直接给不使用异常机制的代码复用。
(6)、二进制程序,异常处理函数增加了受攻击的概率,通常可以通过覆盖异常处理函数的地址,就可以达到攻击的效果;
5、建议使用异常机制的一些特殊场景
在接收c++语言本身抛出的异常(如new失败、STL等)、第三方库、系统库的接口抛出异常时,可以用异常机制捕获;