我看到与所定义的析构函数一些C ++类,如下所示:

class someClass
{
    public:
        someClass();
        ~someClass() throw();
};

这是一个好主意?

我清楚地知道,析构函数应该永远不会抛出异常,但会这实际上阻止我在我的析构函数抛出异常?我不是100%肯定它保证了。

参考:这个最近问题

有帮助吗?

解决方案

这并不妨碍你从你的析构函数抛出异常。编译器将仍然让你这样做。不同的是,如果的你让一个例外,从析构函数中逃脱,你的程序将立即拨打unexpected。这个函数调用任何unexpected_handler点,默认为terminate。所以,除非你做一些事情来处理一个意外的异常,你的程序终止,这并不完全是一个坏主意。毕竟,如果异常真的是意外,那么就算不上什么你的程序将能够做反正来处理它。

这是不是特别的析构函数;同样的规则适用于异常规格为所有方法。

其他提示

这不是一个可怕的想法。如果你在析构函数抛出,同时也不例外被传播,你将立即中止它可以让你知道你已经忘了做一个实际的非投掷析构函数。

如果在另一方面,你离开投出符合规范,你只知道你的坏析构函数实现时的例外是,其实抛出。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top