青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統(tǒng)計

最新評論

SEH的綜合(轉)

SEH模型主要包括try-except異常處理機制和try-finally結束處理機制,而且這兩者能夠很好地有機統(tǒng)一起來,它們結合使用時,能夠提供給程序員非常強大、非常靈活的控制手段。其實這在上一篇文章中的幾個例子中已經(jīng)使用到,這里將繼續(xù)進行系統(tǒng)的介紹,特別是try-except和 try-finally結合使用時的一些細節(jié)問題。

try-except和try-finally組合使用


  try-except和try-finally可以組合起來使用,它們可以是平行線性的關系,也可以是嵌套的關系。而且不僅是try-except語句中可以嵌套try-finally語句;同時try-finally語句中也可以嵌套try-except語句。所以它們的使用起來非常靈活,請看下面的代碼:

// 例程1,try-except語句與try-finally語句平行關系
#include <stdio.h>
void main()
{
puts("hello");

__try
{
int* p;
puts("__try塊中");

// 下面拋出一個異常
p = 0;
*p = 25;
}
__except(1)
{
puts("__except塊中");
}

__try
{
}
__finally
{
puts("__finally塊中");
}

puts("world");
}


// 例程2,try-except語句中嵌套try-finally
#include <stdio.h>

void main()
{
puts("hello");

__try
{
__try
{
int* p;
puts("__try塊中");

// 下面拋出一個異常
p = 0;
*p = 25;
}
__finally
{
// 這里會被執(zhí)行嗎
puts("__finally塊中");
}
}
__except(1)
{
puts("__except塊中");
}

puts("world");
}


// 例程3,try-finally語句中嵌套try-except
#include <stdio.h>

void main()
{
puts("hello");

__try
{
__try
{
int* p;
puts("__try塊中");

// 下面拋出一個異常
p = 0;
*p = 25;
}
__except(1)
{
puts("__except塊中");
}
}
__finally
{
puts("__finally塊中");
}

puts("world");
}

try-except和try-finally組合使用時,需注意的事情


  在C++異常模型中,一個try block塊可以擁有多個catch block塊相對應,但是在SEH模型中,一個__try塊只能是擁有一個__except塊或一個__finally塊相對應,例如下面的程序代碼片斷是存在語法錯誤的。

// 例程1,一個__try塊,兩個__except塊
#include <stdio.h>
void main()
{
puts("hello");

__try
{
int* p;
puts("__try塊中");

// 下面拋出一個異常
p = 0;
*p = 25;
}
__except(1)
{
puts("__except塊中");
}
// 這里有語法錯誤
__except(1)
{
puts("__except塊中");
}

puts("world");
}


// 例程2,一個__try塊,兩個__finally塊
#include <stdio.h>
void main()
{
puts("hello");

__try
{
puts("__try塊中");
}
__finally
{
puts("__finally塊中");
}
// 這里有語法錯誤
__finally
{
puts("__finally塊中");
}

puts("world");
}


// 例程3,一個__try塊,對應一個__finally塊和一個__except塊
#include <stdio.h>
void main()
{
puts("hello");

__try
{
int* p;
puts("__try塊中");

// 下面拋出一個異常
p = 0;
*p = 25;
}
__finally
{
puts("__finally塊中");
}
// 這里有語法錯誤
__except(1)
{
puts("__except塊中");
}

puts("world");
}

溫過而知新

  這里給出最后一個簡單的try-except和try-finally相結合的例子,讓我們溫過而知新。代碼如下(這是MSDN中的例程):

#include "stdio.h"

void test()
{
int* p = 0x00000000; // pointer to NULL

__try
{
puts("in try");
__try
{
puts("in try");

// causes an access violation exception;
// 導致一個存儲異常
*p = 13;

// 呵呵,注意這條語句
puts("這里不會被執(zhí)行到");
}
__finally
{
puts("in finally");
}

// 呵呵,注意這條語句
puts("這里也不會被執(zhí)行到");
}
__except(puts("in filter 1"), 0)
{
puts("in except 1");
}
}

void main()
{
puts("hello");
__try
{
test();
}
__except(puts("in filter 2"), 1)
{
puts("in except 2");
}
puts("world");
}

上面的程序運行結果如下:
hello
in try
in try
in filter 1
in filter 2
in finally
in except 2
world
Press any key to continue

下面用圖表描述一下上面例程運行時的執(zhí)行流程,如下圖所示。

http://byfiles.storage.msn.com/x1pN1mp8dKYgTFQGzKRebME6373opU2RrYhP-RNY0NuTGTVALxogHdgmzNzRzPwfASz1zkLBkeiEHATD3Jz-th2Y1hux63KBlTxb_s8coVuS6jfznoejqiLpQ



總結

  (1) try-except和try-finally可以組合起來使用,它們可以是平行線性的關系,也可以是嵌套的關系。而且不僅是try-except語句中可以嵌套try-finally語句;同時try-finally語句中也可以嵌套try-except語句。

   (2) 一個__try塊只能是擁有一個__except塊或一個__finally塊相對應。

  至此,關于SEH的__try、__except、__finally、__leave模型已經(jīng)基本闡述完畢,但是主人公阿愚認為,有關SEH模型機制,還有一個非常關鍵的內容沒有闡述到,那就是SEH與C++異常處理模型可以結合使用嗎?如果可以的話?它們組合使用時,有什么限制嗎?或帶來什么不良后果嗎?

  大家知道,Windows平臺提供的SEH機制雖然主要是應用于C語言的程序,以便第三廠商開發(fā)出高效的設備驅動程序來。但是__try、__except、__finally、__leave模型同樣也可以在C++程序中使用,這在MSDN中已經(jīng)提到,雖然微軟還是建議,在 C++程序中盡量采用C++的異常處理模型。

  但是對于廣大程序員而言,大家有必要知道,__try、__except、__finally、__leave模型在C++程序中使用時的一些限制。下一篇文章中,阿愚將把自己總結的一些經(jīng)驗和體會與大家一塊分享。去看看吧!GO!

posted on 2008-01-25 19:28 大龍 閱讀(963) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产亚洲福利一区| 亚洲精品极品| 国产欧美在线观看| 欧美日韩国语| 99re8这里有精品热视频免费| 亚洲欧洲av一区二区三区久久| 欧美精品入口| 一区二区三区高清在线| 亚洲女性裸体视频| 亚洲午夜一级| 红桃av永久久久| 欧美成人有码| 久久久99精品免费观看不卡| 在线亚洲高清视频| 欧美有码视频| 日韩一区二区免费高清| 国产精品久久久久久影院8一贰佰| 亚洲资源在线观看| 99在线观看免费视频精品观看| 国产一在线精品一区在线观看| 亚洲福利在线视频| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美精品激情| 免费久久99精品国产| 欧美大香线蕉线伊人久久国产精品| 99在线|亚洲一区二区| 永久免费精品影视网站| 亚洲图片欧洲图片av| 亚洲欧洲精品一区| 亚洲乱码国产乱码精品精天堂| 在线播放中文一区| 影音先锋欧美精品| 久久精品国产v日韩v亚洲 | 欧美一区二区网站| 久久一日本道色综合久久| 久久久久久一区二区| 欧美一级片一区| 久久久亚洲人| 欧美日韩国产一区二区三区地区 | 久久精品视频导航| 欧美国产一区二区| 噜噜噜噜噜久久久久久91| 欧美freesex交免费视频| 亚洲精品国产视频| 欧美高清在线观看| 伊人色综合久久天天| 亚洲电影下载| 欧美在线免费一级片| 麻豆成人精品| 99精品国产在热久久下载| 亚洲在线不卡| 亚洲国产成人在线| 香蕉乱码成人久久天堂爱免费 | 亚洲在线电影| 午夜精彩视频在线观看不卡| 欧美激情黄色片| 亚洲欧洲日韩在线| 99热免费精品| 正在播放日韩| 欧美午夜精品理论片a级按摩| 欧美精品一区二区三区久久久竹菊| 亚洲美女啪啪| 亚洲永久字幕| 尤物精品在线| 99国产精品久久久久久久久久| 国产精品性做久久久久久| 久久亚洲不卡| 欧美日韩精品二区| 久久久xxx| 欧美日韩精品一区二区天天拍小说| 久久国产精品99国产| 欧美成人精品一区二区| 午夜一区在线| 欧美91视频| 久久久精品性| 欧美日韩国产不卡在线看| 久久黄色级2电影| 免费看av成人| 久久国产精品高清| 欧美精品日日鲁夜夜添| 久久精品国产亚洲aⅴ| 欧美日韩国产二区| 欧美不卡高清| 国产一区二区久久久| 野花国产精品入口| 亚洲精品资源美女情侣酒店| 欧美伊人久久久久久午夜久久久久 | 欧美精品啪啪| 免费91麻豆精品国产自产在线观看 | 亚洲国产欧洲综合997久久| 久久精品99无色码中文字幕| 欧美激情在线狂野欧美精品| 国产精品久久久久免费a∨大胸| 欧美搞黄网站| 国产精品另类一区| 99在线精品观看| 99这里只有久久精品视频| 久久久精品国产免大香伊| 久久国产精品99国产精| 欧美视频在线看| 亚洲精品视频在线| 亚洲国产另类精品专区| 久久久九九九九| 久久精品中文| 日韩视频欧美视频| 91久久精品国产91性色| 欧美一级日韩一级| 久久国产99| 国产一区视频在线观看免费| 性欧美精品高清| 性久久久久久久久| 国产精品乱人伦一区二区| 在线综合+亚洲+欧美中文字幕| 日韩一级黄色大片| 欧美激情女人20p| 亚洲日本欧美| 99riav1国产精品视频| 欧美精品自拍偷拍动漫精品| 亚洲日本电影在线| 亚洲天堂av在线免费| 欧美视频中文字幕在线| 一区二区三区高清视频在线观看 | 欧美中文字幕在线观看| 久久综合色8888| 亚洲黄色在线观看| 欧美激情一区二区三区在线视频观看 | 欧美成人资源| 亚洲日本成人| 亚洲综合成人婷婷小说| 国产精品一区=区| 久久成人精品无人区| 欧美福利一区| 一区二区久久久久| 国产精品国产亚洲精品看不卡15| 国产综合香蕉五月婷在线| 亚洲人成网站777色婷婷| 在线视频精品一区| 欧美日韩久久久久久| 亚洲人成人一区二区在线观看| 一区二区三区四区五区精品| 国产精品你懂的在线欣赏| 欧美一区2区视频在线观看| 欧美v国产在线一区二区三区| 亚洲精品一区二区三区四区高清| 国产精品av一区二区| 久久爱www久久做| 亚洲片在线资源| 久久成人18免费观看| 最新高清无码专区| 欧美午夜无遮挡| 久久久久久久国产| 尤物在线精品| 亚洲久色影视| 亚洲欧美日韩一区二区在线| 久久精品国产亚洲一区二区三区 | 亚洲欧美日韩视频一区| 国产一区清纯| 欧美精品一区二区三区在线看午夜 | 欧美日韩国产高清视频| 免费一区二区三区| 亚洲淫性视频| 亚洲欧美日韩在线播放| 亚洲免费播放| 日韩小视频在线观看| 亚洲精品久久久久久久久久久久久 | 免费欧美高清视频| 理论片一区二区在线| 久久综合久久综合这里只有精品| 久久免费国产| 免费人成精品欧美精品| 久久美女性网| 另类av一区二区| 欧美69视频| 欧美激情在线| 欧美日韩黄色大片| 欧美日韩成人激情| 国产精品成人aaaaa网站| 欧美激情精品久久久久久免费印度| 久久久久久久精| 久久亚洲国产成人| 欧美3dxxxxhd| 亚洲国产另类久久精品| 最新中文字幕一区二区三区| a4yy欧美一区二区三区| 亚洲午夜久久久| 欧美一区二区三区在线观看视频| 久久国产一二区| 免费美女久久99| 欧美日韩免费看| 国产免费成人av| 在线电影国产精品| 亚洲人成网站777色婷婷| 一区二区三区国产精华| 午夜一级久久| 美女精品一区| 亚洲精品国产精品国自产在线| 亚洲图片欧洲图片日韩av| 亚洲一区激情| 麻豆av福利av久久av| 欧美视频一区二区三区|