当前位置:  开发笔记 > 编程语言 > 正文

如何在Linux C++中捕获系统级异常?

如何解决《如何在LinuxC++中捕获系统级异常?》经验,为你挑选了1个好方法。

不调用以下catch():

void test(void)
{
    int i=1,j=0,k;
    try
    {
        k = i/j;
    }
    catch(...)
    {
        ...handle it...
    }
}

有没有办法捕捉到这种异常?



1> lakshmanaraj..:

请查看 http://linux.die.net/man/1/gcc, 有一个编译器选项-mcheck-zero-division来处理这个问题.

或者,安装SIGFPE处理程序可能是一个选项,浮点数乘以0将生成'FPE_ZERODIVIDE'

         signal(SIGFPE, (fptr) FPE_ExceptionHandler);

         void FPE_ExceptionHandler(int nSig,int nErrType,int */*pnReglist*/)
          {
                switch(nErrType)
                  {
                    case FPE_ZERODIVIDE:  /* ??? */ break;
                }

            }

以来

大多数浮点系统都基于IEEE标准,允许除以0.这将根据数字的符号返回正无穷大或负无穷大.(0/0除外返回未定义的NAN - 再次不是例外情况.)这对科学和数学应用程序很有用.NANs有效地表明计算不可行但允许计算继续的情况.持续的计算不会产生新的结果,但将继续返回NANs.这允许在计算器内进行错误检查时执行长的长计算链.只需要在工作的最后执行错误检查.这使代码更简单,也更快.对于某些应用程序,它有时也会更有用,

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有