?1?void?ExceptTest2()
?2?{
?3?????int?i?=?0;
?4?????int?*p?=?NULL;
?5?????__try
?6?????{
?7?????????__try
?8?????????{
?9?????????????__try
10?????????????{
11?????????????????__try
12?????????????????{
13?????????????????????__try
14?????????????????????{
15?????????????????????????*p?=?1;?//1.這里引發(fā)異常
16?????????????????????????i?=?10;
17?????????????????????}
18?????????????????????__finally
19?????????????????????{
20?????????????????????????i?=?11;?//4.全局展開(kāi)第一步
21?????????????????????}
22?????????????????}
23?????????????????__finally
24?????????????????{
25?????????????????????i?=?8;?//5.全局展開(kāi)第二步
26?????????????????}
27?????????????????i?=?9;??//這里不會(huì)被執(zhí)行,因?yàn)槿终归_(kāi)完成后,將執(zhí)行異常處理代碼
28?????????????}
29?????????????__except?(EXCEPTION_CONTINUE_SEARCH)//2.過(guò)濾器返回EXCEPTION_CONTINUE_SEARCH,繼續(xù)向上層查找
30?????????????{
31?????????????????i?=?1;?//因?yàn)檫^(guò)濾器表明不處理異常,所以這里也不會(huì)被執(zhí)行
32?????????????}
33?
34?????????????i?=?2;??//這里不會(huì)被執(zhí)行,因?yàn)槿终归_(kāi)完成后,將執(zhí)行異常處理代碼
35?
36?????????????__try??
37?????????????{
38?????????????????i?=?5;?//這里不會(huì)被執(zhí)行,因?yàn)槿终归_(kāi)完成后,將執(zhí)行異常處理代碼
39?????????????}
40?????????????__finally
41?????????????{
42?????????????????i?=?6;?//這里不會(huì)執(zhí)行(因?yàn)槠鋵?duì)應(yīng)的__try塊中沒(méi)有代碼被執(zhí)行)
43?????????????}
44?????????}
45?????????__finally
46?????????{
47?????????????i?=?35;?//6.全局展開(kāi)第三步
48?????????}
49?????}
50?????__except(EXCEPTION_EXECUTE_HANDLER)?//3.找到了異常處理塊,開(kāi)始全局展開(kāi)
51?????{
52?????????i?=?20;?//6.執(zhí)行異常處理代碼
53?????}
54?????i=10;?//7.異常處理完成之后,指令指針到此
55?}