如何清除异常掩码

时间:2015-02-12 19:26:01

标签: c++ exception exception-handling iostream

为文件创建异常掩码时,如果在文件操作期间抛出异常,我可以使用ios::clear()重置实际文件的状态位。

虽然这样做之后,异常掩码仍会抛出异常,认为指定的错误状态标志仍然设置为true吗?如果是这样,我如何重置异常掩码,以便在将来出现适当情况时准备抛出更多异常?

ios::exceptions ios::clear中的任何内容都没有说明异常掩码会在其中一个指定的错误状态标志之后继续抛出异常走了。

整体问题是: 如果异常掩码抛出异常,之后通过ios::clear清除相关文件的错误状态标志,那么异常掩码是否仍然存在抛出异常(假设{{1}}没有引发另一个错误状态标志本身)?如果是这样,我如何通过重置/清除它来阻止它这样做?

1 个答案:

答案 0 :(得分:1)

异常掩码不会抛出异常。抛出异常的是所有修改流的状态的动作,如果在修改之后,状态中至少有一个设置位对应于异常掩码中的设置位。

因此,如果以这样的方式使用clear设置异常掩码中存在的位,则会抛出异常。