【发布时间】:2014-10-21 11:36:02
【问题描述】:
(1) 给定一个基本(可能是 CV 限定)类型 X 的任意变量 x,并且
(2) 格式输出语句
outputStream << x;
其中outputStream 是任何标准<iostream> 输出流(cout、cerr、clog、wcout、wcerr、wclog):
C++11标准对语句(2)可能抛出的异常类型有什么限制?假设我想写出尽可能精确的catch匹配,并且不限制自己捕捉std::exception。
例如,我是否也应该测试std::bad_alloc 或<stdexcept> 的任何其他异常,还是所有异常都限于ios_base::failure?
try {
outputStream << x;
} catch (/* ??? */) { /* ... */ }
} catch (/* ??? */) { /* ... */ }
// ... ???
PS:请保持这个工具链和平台无关,严格的 C++11 问题。诸如“为什么 $% 你要编写这样的代码?”之类的评论没有建设性。我只想知道在最坏的符合标准的情况下会出现什么样的例外情况。谢谢! :)
【问题讨论】:
标签: c++ c++11 iostream c++-standard-library