尝试和捕获语句对于实际异常很容易,但是如何为自我限制编写try / catch?
例如,如果我从cin得到一个整数,我想要2,4或7,还有其他任何要打印的“那个数字无效”并再试一次,怎么会用c ++编写?
答案 0 :(得分:3)
@Adam Rosenfield是对的:应该为特殊情况保留例外情况 - 即,您不希望发生的事情(或至少不经常发生)。预计会经常发生输入错误数据的用户。
由于您总是希望至少读取一次输入,因此这是do / while循环有意义的情况:
do {
std::cin >> number;
} while (number != 2 && number != 4 && number != 7);
答案 1 :(得分:1)
您可以使用简单的while
循环来执行此操作:
while (true) {
int value = /* ... read a number ... */
if (value == 2 || value == 4 || value == 7) break;
/* ... report an error ... */
}
你是不对的,你不应该在这里使用try / catch。这些是处理真正无法恢复的错误的重量级原语。在这种情况下,这个简单的轻量级循环应该可以正常工作。