【发布时间】:2015-05-05 23:47:00
【问题描述】:
如何将此行从 C++ 转换为 C#?
std::ifstream in;
in.exceptions(std::ios_base::badbit); //*THIS LINE*
根据this page,前一行代码为流设置了一个新的异常掩码,并清除了所有当前的错误状态标志。我还猜测它是上面链接页面中std::ios::exceptions 的“第二种形式”。
由于我对 C# 的 FileStream 类缺乏经验,由于缺乏类似的东西,我一直很困惑。
【问题讨论】:
-
仅适用于 C++:抛出异常的流很糟糕(我认为)。对于与 c++/clr 交互的 C++,情况变得更糟 - 您必须将 C++ 异常转换为 C++/clr 异常,同时跨越从 C++ 到 C++/clr 的边界
-
感谢您的回复!我没有使用 C++/clr。我只想用 C# 完成同样的事情。
-
您是否尝试让 FileStream 在 IO 错误时抛出异常?因为这是默认行为。如果发生 IO 错误,Read 和 Write 方法都会抛出 IOException。
-
@pixelbadger 这正是我需要知道的。谢谢!
-
我在回答中扩展了我的陈述。如果您觉得我的评论有用,如果您能将此标记为答案,我将不胜感激。
标签: c# c++ ios exception ifstream