加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 尝试/捕捉整个程序

发布时间:2020-12-16 10:10:40 所属栏目:百科 来源:网络整理
导读:我习惯于按如下方式构建我的C项目: int main(int ac,char* av[]){ try { Object foo; foo.run() /* ... */ } catch (const std::exception e) { std::cerr e.what() std::endl; return 1; } catch (...) { std::cerr "Unknown error." std::endl; return 1;
我习惯于按如下方式构建我的C项目:

int main(int ac,char* av[])
{
    try
    {
       Object    foo;

       foo.run()
       /* ... */
    }
    catch (const std::exception& e)
    {
       std::cerr << e.what() << std::endl;
       return 1;
    }
    catch (...)
    {
       std::cerr << "Unknown error." << std::endl;
       return 1;
    }

    return 0;
}

我想知道这是一个好习惯,还是在“预期”产生错误的小块代码上使用try / catch块更好?

解决方法

如果要控制未处理的异常处理方式(如果它们达到顶级),则可以将整个程序放入这样的顶级异常处理程序中.

但是有一个不利之处:标准的崩溃行为是抢先的,这可能意味着你没有得到崩溃转储,因此缺少事后调试的关键信息.

此外,它们可能无法达到顶级,但会导致std :: unexpected()和调用std :: terminate().

因此,即使您想做自己的事情,std::set_terminate也可能会更好.

考虑做自己的事情然后像正常一样崩溃(你不能用你的全局异常处理程序).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读