C#的C++ifstream异常掩码

C++ ifstream exception masks for C#

本文关键字:掩码 异常 C++ifstream      更新时间:2023-10-16

如何将此行从C++转换为C#?

std::ifstream in;
in.exceptions(std::ios_base::badbit); //*THIS LINE*

根据此页面,前一行代码为流设置了一个新的异常掩码,并清除任何当前错误状态标志。从上面链接的页面中,我还猜测它是std::ios::exceptions的"第二种形式"。

由于我对C#的FileStream类缺乏经验,我一直很困惑,因为缺少类似的东西。

如果发生任何潜在的I/O错误,FileStream.ReadFileStream.Write方法都将抛出IOException。这是默认行为。

与C++不同,异常抛出是C#中错误处理的预期形式。因为异常从一开始就是.NET的一部分,所以没有像C++那样围绕流中使用异常的争论。

大多数(如果不是全部的话).NET框架标准库都会在异常状态下抛出异常。我能想到的唯一例外是在使用Try-Parse模式时,它对预期的行为非常明确。