如何清除异常掩码

How to clear exception mask

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

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

ios::exceptionsdocumentation 中没有任何内容表示 异常掩码 will/won 不会在其中之一之后继续抛出异常指定的错误状态标志关闭。

总题为: 如果 exception mask 抛出异常,之后通过使用 ios::clear 清除相关文件的错误状态标志,exception mask 仍然抛出异常(假设 ios::clear 本身没有触发另一个错误状态标志)?如果是这样,我如何通过重置 it/clearing 来防止它这样做?

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

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