C ++是否可以忽略函数中的异常?

The*_*ect 5 c++ exception-handling

我创建了一个引发异常的函数,但是在某些情况下,我希望它简单地忽略此异常。

我是这样写代码的,但是不太优雅:

try {
    myFunction();
} catch (...) {}
Run Code Online (Sandbox Code Playgroud)

C ++是否有另一种编写方法?

Dav*_*aim 8

不,没有。

您可以遵循标准在这种情况下所做的操作,即将函数重载两次,一次使用std::nothrow_t,一次不使用。用后者包裹第一个

std::error_code my_function(std::nothrow_t) noexcept;
void my_function(); //throws
Run Code Online (Sandbox Code Playgroud)


Lig*_*ica 2

不,这就是你要写的。

它本身并不坏,但如果您发现您的代码由于使用此构造的次数而变得丑陋,则可能表明您使用它太多了。

我发现自己偶尔会忽略例外情况,但如果这对您来说是“常态”,那么您的设计可能有问题。