我似乎找不到以下问题的答案,在这种情况下std::fstream
它通过异常报告错误,在这种情况下它通过设置错误标志来报告错误。
我知道存在一种fstream::exceptions()
允许您为某些类型(标志)的错误启用异常生成的方法,但是在多次阅读可用文档后,我完全糊涂了。
例如,我不明白的是:如果抛出异常被禁用,那么线程是否会在已经禁用的线程中发生错误时抛出异常?
或者,例如:如果启用了抛出异常,线程会立即抛出异常,还是仅在相应的错误标志已经设置时才抛出异常(即,如果再次发生错误)?
事实上,
std::ios_base::exceptions
当不带参数调用时,它会返回线程中异常的状态。如果没有在任何地方使用参数调用它,也就是说,在设置特定标志时没有抛出异常的命令,那么它将返回一个空值,这意味着不会产生异常。当设置那些将返回的标志时,将准确生成一个异常ios_base::failure
(应该尝试捕获并处理它)std::ios_base::exceptions
。例如:
所以第一个问题的答案是:
回答第二个问题: