何时捕获异常?

use*_*241 5 c++ exception-handling

会有什么不同如果我在不使用例外的情况下执行以下操作吗?

void func()
{
    try
    {
        if (n > 5)
        {
            throw "n is greater than 5";
        }
    }
    catch (const char *e)
    {
        MessageBox(0, e, 0, 0);
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

void func()
{
    if (n > 5)
    {
       MessageBox(0, "n is greater than 5", "Error", 0);
       return;
    }
}
Run Code Online (Sandbox Code Playgroud)

wjb*_*eau 8

我可能会说你最好建议不要使用异常进行流量控制.顾名思义,例外情况是处理特殊情况.在上面的例子中,你显然希望n可能> 5,所以这并不是一个特例.如果您的应用程序有办法处理该情况,那么它应该优先于引发异常.

我确信有些情况下逻辑会下降,但总的来说,我认为这是一个很好的经验法则.

但从技术角度来说,没有太大差异(如果你做了很多的话可能会有表现).