对不需要的整数进行自我强制尝试/捕获

时间:2011-01-09 04:19:08

标签: c++ exception-handling

尝试和捕获语句对于实际异常很容易,但是如何为自我限制编写try / catch?

例如,如果我从cin得到一个整数,我想要2,4或7,还有其他任何要打印的“那个数字无效”并再试一次,怎么会用c ++编写?

2 个答案:

答案 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。这些是处理真正无法恢复的错误的重量级原语。在这种情况下,这个简单的轻量级循环应该可以正常工作。