如何强调该功能可能会抛出?

How to emphasize that function may throw?

考虑以下函数:

void checkPlayerCounter() {
    if (playerCounter != consts::numberOfPlayers) {
        throw std::runtime_error("Detected " + std::to_string(playerCounter)
          + " player instead of " + std::to_string(consts::numberOfPlayers));
    }
}

该函数可能会抛出异常,为了便于阅读,我想在头文件中的函数声明中强调这一点。我怎样才能做到这一点?

我正在寻找类似的东西:

void checkPlayerCounter() may throw;

您可以明确使用 noexcept(false)。就在你建议的地方:

void checkPlayerCounter() noexcept(false);

不幸的是,noexcept 无法避免双重否定。另一种选择是评论:

void checkPlayerCounter(); // may throw

也就是说,除非另有说明,否则无论谁阅读声明,都应始终假设该函数可能会抛出异常。

/**
 * @throws std::runtime_error
 */
void checkPlayerCounter();