对无效输入进行异常处理的构造函数 C++

Onl*_*st9 0 c++ oop constructor class c++11

我正在尝试创建一个构造函数来验证输入并在输入无效时引发异常。

假设我有一个构造函数,它仅接受 int a 的 mod 12 值、b 的 mod 16 值以及 c 的大于 0 的值。我正在尝试使用std::invalid_argument. 我将如何实现异常处理程序?这会抛出异常吗?如果输入的值超出范围?

Mod(int a, int b, int c) {
   try {
       if (a > 11 || a < 0 || b > 15 || b < 0 || c < 0) {
           throw std::invalid_argument("Invalid Argument");
       }
   } catch (std::invalid_argument const& value) {
       std::cerr << "Invalid Argument " << value.what() << '\n';
   }
}
Run Code Online (Sandbox Code Playgroud)

eer*_*ika 7

这会抛出异常吗?

是的,但是随后您捕获了异常,因此构造函数将成功返回。

如果您的目标是抛出构造函数,那么不要在构造函数中捕获异常。

我将如何实现异常处理程序?

您可以在要处理异常的范围内实现异常处理程序。您无法在想要抛出异常的范围内处理异常。