流外异常处理

2023-12-31

我故意使用这种写入文件的方法,所以我尝试处理写入关闭文件的可能性的异常:

void printMe(ofstream& file)
{
        try
        {
            file << "\t"+m_Type+"\t"+m_Id";"+"\n";
        }
        catch (std::exception &e)
        {
            cout << "exception !! " << endl ;
        }
};

但显然 std::exception 不是关闭文件错误的适当异常,因为我故意尝试在已经关闭的文件上使用此方法,但没有生成我的“异常!!”注释。

那么我应该写什么例外?


默认情况下,流不会引发异常,但您可以通过函数调用告诉它们引发异常file.exceptions(~goodbit).

相反,检测错误的正常方法只是检查流的状态:

if (!file)
    cout << "error!! " << endl ;

原因是,在许多常见情况下,无效读取只是一个小问题,而不是一个主要问题:

while(std::cin >> input) {
    std::cout << input << '\n';
} //read until there's no more input, or an invalid input is found
// when the read fails, that's usually not an error, we simply continue

相比:

for(;;) {
    try {
        std::cin >> input;
        std::cout << input << '\n';
    } catch(...) {
        break;
    }
}

现场观看:http://ideone.com/uWgfwj http://ideone.com/uWgfwj

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

流外异常处理 的相关文章

随机推荐

  • Windows CDROM 弹出

    有谁知道在 Windows 2000 或更高版本上以编程方式关闭 CD 托盘的方法吗 打开 CD 托盘存在 但我似乎无法关闭它 尤其是在 W2k 下 如果可能的话 我特别寻找一种从批处理文件中执行此操作的方法 但 API 调用也可以 我有点
  • CSS 向右浮动无法正常工作

    我的右侧浮子没有按我预期的方式工作 我希望我的按钮能够很好地对齐到一行上方文本的右侧 div style padding 5px border bottom width 1px border bottom color gray border
  • 在帖子上发帖时遇到“(#100) 查找请求的故事时出错”

    我正在使用 Graph API 来获取用户被标记的帖子 然后通过以下方式对帖子进行点赞POSTing to post id likes 然而 即使该帖子显然存在 因为我能够检索到post id 发出like时 遇到如下错误 100 Erro
  • C# 跟踪截断长消息

    在 C 中 我启用了跟踪和网络跟踪源
  • 是否有一种算法可以将威胁范围与二维网格上的任意移动范围相结合?

    我正在构建一个简单的基于 2D 网格的游戏 并正在寻找一种方法来计算每个角色可以在游戏板上施加的 威胁 区域 当前地点的威胁很容易计算 这是下面的红色菱形 但我希望将这些信息与任意 可以步行到这里 区域 橙色 结合起来 该算法一起会给我我的
  • 如何链接docker容器?

    我尝试链接我的 docker 容器 但似乎在访问时出错 我的结构如下 数据库docker Mysql 容器名称是um mysql 后端 docker Tomcat 镜像名称为cz um app 前端 docker Nginx 镜像名称为cz
  • 如何从 OAuth2 授权服务器/用户端点获取自定义用户信息

    我有一个资源服务器配置为 EnableResourceServer注释 它通过以下方式引用授权服务器user info uri参数如下 security oauth2 resource user info uri http localhos
  • Visual Studio 中的包目录是什么?我应该将它包含在 SVN 中吗?

    我第一次在 Visual Studio 2010 中使用 ASP NET MVC 4 并使用 SVN 控制源代码 我曾经在 Visual Studio 2008 中使用 MVC 1 其中我有自己的 svn ignore 过滤器 pdb ex
  • 如何在 C# 中从网络摄像头获取持续的位图图像流

    我们有一个对视频流执行处理的 C 应用程序 这是一个低级应用程序 以位图格式接收每一帧 因此基本上我们每秒需要 25 个图像 该应用程序已经适用于我们的一些媒体源 但我们现在需要添加网络摄像头作为输入设备 因此 我们基本上需要从网络摄像头连
  • 使用 Angular 访问数据库

    是否可以在 Angular 框架中访问 MySQL 数据库 或者像其他 Javascript 一样不安全 我需要发布到 PHP 页面来检索data json来自数据库 1 是否可以在角度框架中访问MySQL数据库 这个问题不是特定于角度的
  • JavaScript 模块模式中的方括号表示法和范围

    我一直在使用 JavaScript 中的模块模式 并且对范围和方括号表示法 SBN 有疑问 请考虑以下简单示例 function module function myMethod text console log text module i
  • 如何使用 mysqli::bind_param 并将数组作为第二个参数

    该查询应该将新用户插入 users 表中 user DB getInstance gt insert users array username gt jim password gt pass salt gt salt 对应insert pu
  • 创建映射类型以承诺返回值

    假设我正在处理与以下接口相对应的对象 interface Foo getCount number doSomething boolean 它只有函数 并且没有一个函数是异步的 但是 我并不总是能够同步访问该对象 并且在某些情况下将处理异步版
  • org.xml.sax.SAXParseException:cvc-elt.1:找不到元素“tns:root_element”的声明

    我已经花了过去2个小时在这上面 我无法弄清楚为什么会发生此错误 我有一个简单的 xsd 和 xml 代码 xml 文件
  • git format-patch 无需提交

    如何生成 HEAD 和暂存区域之间的补丁 无需提交 e g echo text gt some file git add some file git format patch what the sha HEAD 我必须提交然后重置吗 git
  • 使用策略模式避免沮丧

    我正在读这个网站 https dzone com articles the liskov substitution principle with examples关于里氏替换原理 它指出 根据 LSP 使用基类引用的函数必须是 能够在不知情
  • QTextCursor 和 beginEditBlock

    我在 QPlainTextEdit 中有一些文本 每行以 10 个空格开头 line1 line2 line3 line4 然后 我选择几行 并在循环中我想从所有选定的行中删除前两个空格 cursor beginEditBlock for
  • Powershell忽略“只读”请求并以非只读方式打开

    我有一个文档设置为请求用户打开只读版本 选项 只读推荐 我想仅在 powershell 中打开 Excel 文档而不继续阅读 拒绝要求打开 只读 的提示 这是我当前的代码 dir file path latest Get ChildItem
  • 从 MediaWiki XML 中提取页面标题和贡献者

    我有一个非常大 7GB 的 MediaWiki XML 转储 其中包含对 Wiki 每个页面所做的每次更改的记录 我试图记录哪些用户对每个页面做出了贡献 因此我想从 XML 中提取该信息 XML 看起来像
  • 流外异常处理

    我故意使用这种写入文件的方法 所以我尝试处理写入关闭文件的可能性的异常 void printMe ofstream file try file lt lt t m Type t m Id n catch std exception e co