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)
这会抛出异常吗?
是的,但是随后您捕获了异常,因此构造函数将成功返回。
如果您的目标是抛出构造函数,那么不要在构造函数中捕获异常。
我将如何实现异常处理程序?
您可以在要处理异常的范围内实现异常处理程序。您无法在想要抛出异常的范围内处理异常。
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |