我要用cerr吗?

The*_* do 11 c++

在下面描述的情况下使用cerr是好的风格吗?

try
    {
    cout << a + b;
    }
    catch(const IntException& e)
    {
        cerr << "Exception caught: " << typeid(e).name(); //using cerr not cout
    }
    catch(...)
    {
        cerr << "Unknown exception.";//using cerr not cout
    }
Run Code Online (Sandbox Code Playgroud)

还是应该使用cout?请参阅代码中的注释.

Oli*_*rth 19

stderr是发送错误消息的传统流(这样OS/shell /任何可以捕获错误消息与"正常"输出分开),所以是的,使用std::cerr!

我没有评论是否仅仅为了打印它而捕获异常比简单地让异常传播出你的应用程序更好...

  • 你就在那里,如果你不确定我想要实现什么,最好不要发表意见;). (3认同)

And*_*all 5

是的,因为默认情况下它们都会转到终端,您可以更改其输出的位置,并且您可能希望cerr转到日志文件,同时cout继续前往stdout.

从本质上讲,如果您现在或将来想要它,它可以让您更好地控制不同输出的位置.

  • 你可能想改写那个; `stderr`和`stdout`通常都被重定向到终端输出; 这与说"`stderr`转到`stdout`"不一样! (2认同)