SEH-Tips

 1 void ExceptTest2()
 2 {
 3     int i = 0;
 4     int *= NULL;
 5     __try
 6     {
 7         __try
 8         {
 9             __try
10             {
11                 __try
12                 {
13                     __try
14                     {
15                         *= 1//1.这里引发异常
16                         i = 10;
17                     }
18                     __finally
19                     {
20                         i = 11//4.全局展开第一步
21                     }
22                 }
23                 __finally
24                 {
25                     i = 8//5.全局展开第二步
26                 }
27                 i = 9;  //这里不会被执行,因为全局展开完成后,将执行异常处理代码
28             }
29             __except (EXCEPTION_CONTINUE_SEARCH)//2.过滤器返回EXCEPTION_CONTINUE_SEARCH,继续向上层查找
30             {
31                 i = 1//因为过滤器表明不处理异常,所以这里也不会被执行
32             }
33 
34             i = 2;  //这里不会被执行,因为全局展开完成后,将执行异常处理代码
35 
36             __try  
37             {
38                 i = 5//这里不会被执行,因为全局展开完成后,将执行异常处理代码
39             }
40             __finally
41             {
42                 i = 6//这里不会执行(因为其对应的__try块中没有代码被执行)
43             }
44         }
45         __finally
46         {
47             i = 35//6.全局展开第三步
48         }
49     }
50     __except(EXCEPTION_EXECUTE_HANDLER) //3.找到了异常处理块,开始全局展开
51     {
52         i = 20//6.执行异常处理代码
53     }
54     i=10//7.异常处理完成之后,指令指针到此
55 }

posted on 2011-08-05 13:32 Vcer-JZ 阅读(281) 评论(0)  编辑 收藏 引用 所属分类: VC


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

统计

随笔分类

随笔档案

搜索

最新评论