C语言标准是没有 try-catch语法 的, M$家自己提供了一组.

  1. /// @file ClassroomExamples.c
  2. /// @brief 验证C语言的非标准try, catch
  3. #include <windows.h>
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include <stddef.h>
  7. #include <crtdbg.h>
  8. #include <conio.h>
  9. void fnTest_TryCatchByM$();
  10. int main(int argc, char *argv[ ], char *envp[ ])
  11. {
  12. fnTest_TryCatchByM$();
  13. printf("END, press any key to quit\n");
  14. getchar();
  15. return 0;
  16. }
  17. void fnTest_TryCatchByM$()
  18. {
  19. int* p = 0x00000000;   // pointer to NULL
  20. puts("hello");
  21. /// __try, __finally, __except都不是C标准函数, 是M$自己家的
  22. /// 为了通用性, 还是不用__x函数
  23. /// __try要有配对的__finally或__except, 只能配对一个
  24. __try
  25. {
  26. puts("in try");
  27. __try
  28. {
  29. puts("in try");
  30. /// 如果不在__try中, 就C05了
  31. *p = 13;    // causes an access violation exception;
  32. }
  33. __finally
  34. {
  35. /// 被__finally捕获的异常, 还会被上一级的__except捕获
  36. /// 反之不行(先被__except捕获, 不会再被上一级的__finally捕获)
  37. puts("in finally");
  38. }
  39. }
  40. /// 当异常发生时, 至少要被一个__except捕获, 否则C05
  41. /// 进不了对应的__finally
  42. /// 最外层的异常捕获必须是__except, 如果是__finally
  43. /// 否则异常发生时, 会C05
  44. __except(puts("in filter"), 1)
  45. {
  46. puts("in except");
  47. }
  48. puts("world");
  49. }

http://blog.csdn.net/lostspeed/article/details/50438020

测试 __try, __finally, __except(被__finally捕获的异常, 还会被上一级的__except捕获。反之不行)的更多相关文章

  1. 【 转】__try,__except,__finally,__leave异常模型机制

    转自:http://blog.csdn.net/wwl33695/article/details/8686458 导读: 从本篇文章开始,将全面阐述__try,__except,__finally,_ ...

  2. python——异常(1),捕获特定异常

    """1.捕获指定异常,异常类型有多种2.若尝试执行的代码异常类型与捕获的异常类型不同则报错3.try下方一般只放一行代码,若有多行可能异常代码,则捕获一个异常类型后函数 ...

  3. WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?

    在上一篇WCF基础教程之开篇:创建.测试和调用WCF博客中,我们简单的介绍了如何创建一个WCF服务并调用这个服务.其实,上一篇博客主要是为了今天这篇博客做铺垫,考虑到网上大多数WCF教程都是从基础讲起 ...

  4. Android捕获全局异常

    Android捕获全局异常 程序避免不了出现bug,导致程序崩溃,为了尽量不影响用户体验,可以全局捕获异常 效果图 异常捕获处理前 异常捕获处理后(将程序重新启动) 捕获异常的工具类 package ...

  5. Java处理Exception无法捕获的异常

    场景: 使用try...catch(Exception e){}来捕获异常,执行过程中线程中断或阻塞了,但是catch块中却并没有捕获到异常信息. try{ // 此处可能是调用一个远程的接口,或是调 ...

  6. Android应用捕获全局异常自定义处理

    [2016-06-30]最新的全局异常处理DRCrashHandler已经集成在DR_support_lib库中 具体请看: https://coding.net/u/wrcold520/p/DR_s ...

  7. C#同级catch块和finally块中全都抛出异常,上一级捕获哪一个?

    C#同级catch块和finally块中全都抛出异常,上一级优先捕获finally块中的异常. 测试代码: using System; namespace test { class Program { ...

  8. express捕获全局异常的三种方法

    场景 express的路由里抛出异常后,全局中间件没办法捕获,需要在所有的路由函数里写try catch,这坑爹的逻辑让人每次都要多写n行代码 官方错误捕获中件间代码如下 app.use(functi ...

  9. springboot 全局异常捕获,异常流处理业务逻辑

    前言 上一篇文章说到,参数校验,往往需要和全局的异常拦截器来配套使用,使得返回的数据结构永远是保持一致的.参数异常springboot默认的返回结构: { "timestamp": ...

随机推荐

  1. HDU1163【九余数定理】【水题】

    Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  2. caffe神经网络框架的辅助工具(将图片转换为leveldb格式)

    caffe中负责整个网络输入的datalayer是从leveldb里读取数据的,是一个google实现的很高效的kv数据库. 因此我们训练网络必须先把数据转成leveldb的格式. 这里我实现的是把一 ...

  3. 完整的Android手机短信验证源码

    短信验证功能我分两个模块来说,短信验证码的后台和代码实现短信验证码的功能. 一.短信验证码的后台      1.注册Mob账号:http://www.mob.com/#/login 2.注册成功之后, ...

  4. Ubuntu15.04上为火狐浏览器安装Adobe Flash Player插件

    前言:最新版的ubuntu好像没有flashplayer,而且更新源也无法更新成功,找些资料终于发现 这个需要自己手动配置.由于flashplayer无法安装,导致视频,百度上传等功能都无法使用: 安 ...

  5. BZOJ AC300题留念

  6. goahead cgi 及出现的问题解决

    1. route.txt    配置cgi路径 route uri=/cgi-bin dir=/web handler=cgi 2.交叉编译生成cgi goahead  源码路径下  ./test/c ...

  7. HDU2527:Safe Or Unsafe(哈弗曼树)

    Problem Description Javac++ 一天在看计算机的书籍的时候,看到了一个有趣的东西!每一串字符都可以被编码成一些数字来储存信息,但是不同的编码方式得到的储存空间是不一样的!并且当 ...

  8. Windows Azure 网站开发Stacks支持

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Daria Grigoriu 和 Windows Azure 网站开发人员体验合作伙伴共同撰写. Windows Azure 网 ...

  9. 凡客副总裁被曝离职:或因IPO受阻|凡客|王春焕|离职_互联网_新浪科技_新浪网

    凡客副总裁被曝离职:或因IPO受阻|凡客|王春焕|离职_互联网_新浪科技_新浪网 凡客副总裁被曝离职:或因IPO受阻 2013年05月07日 00:56   每日经济新闻    我有话说     每经 ...

  10. 由于物化视图定义为on commit导致update更新基表慢的解决方案

    由于物化视图定义为on commit导致update更新基表慢的解决方案 以下是模拟和解决测试过程: (模拟update慢的过程) 1.首先基于基表创建物化视图日志: create materiali ...