测试 __try, __finally, __except(被__finally捕获的异常, 还会被上一级的__except捕获。反之不行)
C语言标准是没有 try-catch语法 的, M$家自己提供了一组.
- /// @file ClassroomExamples.c
- /// @brief 验证C语言的非标准try, catch
- #include <windows.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <stddef.h>
- #include <crtdbg.h>
- #include <conio.h>
- void fnTest_TryCatchByM$();
- int main(int argc, char *argv[ ], char *envp[ ])
- {
- fnTest_TryCatchByM$();
- printf("END, press any key to quit\n");
- getchar();
- return 0;
- }
- void fnTest_TryCatchByM$()
- {
- int* p = 0x00000000; // pointer to NULL
- puts("hello");
- /// __try, __finally, __except都不是C标准函数, 是M$自己家的
- /// 为了通用性, 还是不用__x函数
- /// __try要有配对的__finally或__except, 只能配对一个
- __try
- {
- puts("in try");
- __try
- {
- puts("in try");
- /// 如果不在__try中, 就C05了
- *p = 13; // causes an access violation exception;
- }
- __finally
- {
- /// 被__finally捕获的异常, 还会被上一级的__except捕获
- /// 反之不行(先被__except捕获, 不会再被上一级的__finally捕获)
- puts("in finally");
- }
- }
- /// 当异常发生时, 至少要被一个__except捕获, 否则C05
- /// 进不了对应的__finally
- /// 最外层的异常捕获必须是__except, 如果是__finally
- /// 否则异常发生时, 会C05
- __except(puts("in filter"), 1)
- {
- puts("in except");
- }
- puts("world");
- }
http://blog.csdn.net/lostspeed/article/details/50438020
测试 __try, __finally, __except(被__finally捕获的异常, 还会被上一级的__except捕获。反之不行)的更多相关文章
- 【 转】__try,__except,__finally,__leave异常模型机制
转自:http://blog.csdn.net/wwl33695/article/details/8686458 导读: 从本篇文章开始,将全面阐述__try,__except,__finally,_ ...
- python——异常(1),捕获特定异常
"""1.捕获指定异常,异常类型有多种2.若尝试执行的代码异常类型与捕获的异常类型不同则报错3.try下方一般只放一行代码,若有多行可能异常代码,则捕获一个异常类型后函数 ...
- WCF基础教程之异常处理:你的Try..Catch语句真的能捕获到异常吗?
在上一篇WCF基础教程之开篇:创建.测试和调用WCF博客中,我们简单的介绍了如何创建一个WCF服务并调用这个服务.其实,上一篇博客主要是为了今天这篇博客做铺垫,考虑到网上大多数WCF教程都是从基础讲起 ...
- Android捕获全局异常
Android捕获全局异常 程序避免不了出现bug,导致程序崩溃,为了尽量不影响用户体验,可以全局捕获异常 效果图 异常捕获处理前 异常捕获处理后(将程序重新启动) 捕获异常的工具类 package ...
- Java处理Exception无法捕获的异常
场景: 使用try...catch(Exception e){}来捕获异常,执行过程中线程中断或阻塞了,但是catch块中却并没有捕获到异常信息. try{ // 此处可能是调用一个远程的接口,或是调 ...
- Android应用捕获全局异常自定义处理
[2016-06-30]最新的全局异常处理DRCrashHandler已经集成在DR_support_lib库中 具体请看: https://coding.net/u/wrcold520/p/DR_s ...
- C#同级catch块和finally块中全都抛出异常,上一级捕获哪一个?
C#同级catch块和finally块中全都抛出异常,上一级优先捕获finally块中的异常. 测试代码: using System; namespace test { class Program { ...
- express捕获全局异常的三种方法
场景 express的路由里抛出异常后,全局中间件没办法捕获,需要在所有的路由函数里写try catch,这坑爹的逻辑让人每次都要多写n行代码 官方错误捕获中件间代码如下 app.use(functi ...
- springboot 全局异常捕获,异常流处理业务逻辑
前言 上一篇文章说到,参数校验,往往需要和全局的异常拦截器来配套使用,使得返回的数据结构永远是保持一致的.参数异常springboot默认的返回结构: { "timestamp": ...
随机推荐
- STL 源代码剖析 算法 stl_algo.h -- partition
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie partition ------------------------------------ ...
- android -- 蓝牙 bluetooth (一) 入门
前段时间在 网上看了一些关于android蓝牙的文章,发现大部分是基于老版本(4.1以前含4.1)的源码,虽然无碍了解蓝牙的基本原理和工作流程,但对着4.2.2的代码看起来总是有些遗憾.所以针对4.2 ...
- c# datagridviewcomboboxcell值无效的解决办法
一直认为是数据库存储的数据和datagridviewcomboboxcell对不上导致,今天碰到两者对应上了,预览的时候还是提示错误, 查看了下网上其他大神的解决方法,是数据库字段类型有误,查看了下, ...
- chapter3习题
// 2013年11月4日21:47:21 # include <stdio.h> # include <math.h> int main() { int n; double ...
- 树莓派deian的linux常用命令
Linux系统,这个强大的系统,现在树莓派也要用到.给大家普及一下. 那些常用的Linux命令 linux的文件结构 / 根目录下的目录 /bin /home /dev /usr /opt /et ...
- ACM比赛(进制转换)
Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu Description 把十进制整数转换 ...
- 1076: [SCOI2008]奖励关( dp )
期望状压dp.... ------------------------------------------------------------------ #include<cstdio> ...
- [置顶] JNI之java传递数据给c语言
1.首先创建 DataProvider类: package com.pl.ndkpassdata; public class DataProvider { static{ System.loadLib ...
- CentOS6.5安全策略设置
应公司内部网站等级测评的需求,正逐渐加强系统安全防护 密码策略设置 检查方法: 使用命令 #cat /etc/login.defs|grep PASS查看密码策略设置 备份方法: cp -p /etc ...
- java--进步学习IO
import java.io.*; public class Demo1 { public static void main(String []args) throws Exception{ File ...