学习用于异常处理的terminate()函数

ZDNet软件频道 时间:2003-05-14 作者:翻译:Java研究组织-郭晓刚 |  我要评论()
本文关键词:cpptips
异常处理是一个微妙的问题,你应该尽可能优雅地处理所有异常。要达到这个目的,你需要学习terminate()函数。
本文译自Builder.com,未经许可请勿转载异常处理是一个微妙的问题,你应该尽可能优雅地处理所有异常。要达到这个目的,你需要学习terminate()函数。

terminate()函数在程序抛出一个异常并且异常没有被捕获的时候被调用,像下面这样:

#include <exception>
#include <iostream>

void on_terminate()
{
    std::cout << "terminate() 函数被调用了!" << std::endl;
    std::cin.get();
}

int main()
{
// 如果用 VC6,去掉“std::”前缀
    std::set_terminate( on_terminate);
    throw std::exception();
    std::cout << "terminate() 函数没有被调用!" << std::endl;
    std::cin.get();
    return 0;
}

避免这种情形的方案一开始看起来很简单:

int main()
{
    try
    {
        /* code */
    }
    catch( std::exception & exc)
    {
        // 记录到日志,或作其他处理
    }
    catch(...)
    {
        // 记录下“Unknown exception”
    }
    return 0;
}


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134