我见过一些 C++ 类的析构函数定义如下:
class someClass
{
public:
someClass();
~someClass() throw();
};
这是个好主意吗?
我很清楚析构函数不应该抛出异常,但这真的会阻止我在析构函数中抛出异常吗?我不是 100% 确定它能保证什么。
最佳答案
它不会阻止您从析构函数中抛出异常。编译器仍然会让你这样做。不同之处在于,如果您确实允许异常从该析构函数中逃逸,您的程序将立即调用 unexpected
。该函数调用 unexpected_handler
指向的任何内容,默认情况下为 terminate
。因此,除非您采取措施来处理意外异常,否则您的程序将终止,这并不是一个坏主意。毕竟,如果异常确实是意外的,那么无论如何您的程序都无法处理它。
这不是析构函数的特殊之处;相同的规则适用于所有方法的异常规范。
关于c++ - 我应该将 throw() 添加到我的 C++ 析构函数的声明中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/456738/