在我的应用程序中有我自己的异常。当我像这样把它扔出去的那一刻:
throw new CChristianLifeMinistryEntryException(strError);
可以理解的是,代码分析触发了这一点,因为我使用了new
。
它建议我使用make_unique
,我试图确定这是否是更新此代码的正确方法。
在c++中异常通常是从std::exception
派生出来的,通过值抛出,通过引用捕获。这样你就不需要管理生命周期(不需要在处理后删除一些异常而不删除其他异常)。
Likethrow std::runtime_error(str_error);
。
MFC使用new
抛出引用的方法早于c++编译器异常支持,因此有一种抛出指针异常的方法,但不是任意类型的异常。对于新代码,不建议使用
。异常有一个特殊的智能指针叫做exception_ptr
,它通常需要在线程之间传递异常,而不是包装被抛出的异常。
如果你用unique_ptr
包装一个异常,你必须捕获它,而这个catch
不会捕获派生的异常,因为不同的unique_ptr
并不是彼此派生的,所以以这种方式包装异常绝对不是一个好主意。