不抛出但依赖于库的类

loo*_*oop 6 c++ stl

我写了一些不抛出异常但却使用STL的类,而STL可以抛出异常.例如,在我的类中有一些函数使用std :: vector,std :: list,std :: string.复制字符串或创建向量时,STL可能会抛出,对吧?所以我无法将我的课程描述为免费例外,对吧?

在这种情况下你们做什么?你在try/catch中包装每个函数吗?你怎么形容你的课程?谢谢

cma*_*ter 1

幸运的是,由于分配问题而抛出 STL 类的可能性非常小:您的进程被 OOM-killer 击落的可能性比分配失败的可能性更大。所以我倾向于忽略这些类型的异常,只是让它们使程序崩溃。try{}catch(){}我对于不使用异常非常激进,所以我编写的代码中没有任何异常。

当我不是独自一人参与一个项目时,我也不会尝试包装每个函数调用,我只是将我的函数声明为throw(). 这样做的效果是,我调用的任何其他函数产生的任何意外异常都会安全地使程序崩溃,而不是传播到可能捕获它的其他函数。这样我就可以确定我的代码的重要部分不会在没有人注意到的情况下被跳过。