C语言的那些小秘密之异常处理

发表于:2011-12-21 09:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:bigloomy(CSDNblog)    来源:51Testing软件测试网采编

分享:

  现在来分析下上面的运行结果,先看看_control87( 0, _MCW_EM );这句,可能很多读者对于这代码比较陌生,它的功能是开启所有的浮点计算异常,通常情况下浮点计算异常是被屏蔽掉的,我们为了能够使得接下来的signal能够捕捉到浮点计算异常,所以要将其开启。在往下看我们通过signal( SIGFPE, handler )来绑定了一个浮点计算异常处理函数,如果发生异常时,那么就调用handler()函数来处理。接下来通过ret = setjmp( buf );保存程序运行的环境信息,以便接下来的调用longjmp()函数能够根据这个保存的信息返回该程序先前setjmp()函数的执行点。同时我们对比两次运行的结果发现如果发现异常的时候接下来的打印语句“printf("发生异常时候不会被执行的语句\n");”是不会被执行的,直接跳转到我们绑定的handler()函数执行了,当然我们在此仅仅是例举一些简单的代码教会读者学会使用setjmp()函数和longjmp()函数来实现异常处理,读者完全可以在此基础上编写出复杂的异常处理。

  到这儿C语言的异常处理部分就结束了,由于本人水平有限,博客中的不妥或错误之处在所难免,殷切希望读者批评指正。同时也欢迎读者共同探讨相关的内容,如果乐意交流的话请留下你宝贵的意见。

相关链接:

C语言的那些小秘密之内存分配

C语言的那些小秘密之堆栈

C语言的那些小秘密之函数指针

C语言的那些小秘密之变参函数的实现

C语言的那些小秘密之函数的调用关系

C语言的那些小秘密之const修饰符

C语言的那些小秘密之指针(一)

C语言的那些小秘密之指针(二)

C语言的那些小秘密之指针(三)

C语言的那些小秘密之指针(四)

C语言的那些小秘密之断言

C语言的那些小秘密之动态数组

C语言的那些小秘密之链表(一)

C语言的那些小秘密之链表(二)

C语言的那些小秘密之字节对齐

C语言的那些小秘密之链表(三)

C语言的那些小秘密之链表(四)

C语言的那些小秘密之volatile

C语言的那些小秘密之预处理

55/5<12345
价值398元的测试课程免费赠送,填问卷领取吧!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号