亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ 中try finally關鍵字詳解

2020-05-23 14:03:55
字體:
來源:轉載
供稿:網友
本文給大家介紹C++ 中try finally關鍵字的相關知識,非常不錯,本文介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起學習吧
 

try-finally語句是Microsoft對C和C++語言的擴展,它能使32位的目標程序在異常出現時,有效保證一些資源能夠被及時清除,這些資源的清除任務可以包括例如內存的釋放,文件的關閉,文件句柄的釋放等等。try-finally語句特別適合這樣的情況下使用,例如一個例程(函數)中,有幾個地方需要檢測一個錯誤,并且在錯誤出現時,函數可能提前返回。

#include <windows.h>
#include <stdio.h>

try-finally語句的語法與try-except很類似,稍有不同的是,__finally后面沒有一個表達式,這是因為try- finally語句的作用不是用于異常處理,所以它不需要一個表達式來判斷當前異常錯誤的種類。另外,與try-except語句類似,try- finally也可以是多層嵌套的,并且一個函數內可以有多個try-finally語句,不管它是嵌套的,或是平行的。當然,try-finally多層嵌套也可以是跨函數的。這里不一一列出示例,大家可以自己測試一番。

另外,對于上面示例程序的運行結果,是不是覺得有點意料之外呢?因為 __finally塊中的put(“__finally塊中”)語句也被執行了。是的,沒錯!這就是try-finally語句最具有魔幻能力的地方,即 “不管在何種情況下,在離開當前的作用域時,finally塊區域內的代碼都將會被執行到”。呵呵!這的確是很厲害吧!為了驗證這條規則,下面來看一個更典型示例,代碼如下:

#include <stdio.h>void main(){puts(“hello”);__try{puts(“__try塊中”);// 注意,下面return語句直接讓函數返回了return;}__finally{puts(“__finally塊中”);}puts(“world”);}上面的程序運行結果如下:hello__try塊中__finally塊中Press any key to continuevoid main(){puts(“hello”);__try{puts(“__try塊中”);}// 注意,這里不是__except塊,而是__finally取代__finally{puts(“__finally塊中”);}puts(“world”);}

上面的程序運行結果如下:

hello
__try塊中
__finally塊中
world
Press any key to continue

總結__finally塊被執行的流程時,無外乎三種情況。第一種就是順序執行到__finally塊區域內的代碼,這種情況很簡單,容易理解;第二種就是goto語句或return語句引發的程序控制流離開當前__try塊作用域時,系統自動完成對__finally塊代碼的調用;第三種就是由于在__try塊中出現異常時,導致程序控制流離開當前__try塊作用域,這種情況下也是由系統自動完成對__finally塊的調用。無論是第 2種,還是第3種情況,毫無疑問,它們都會引起很大的系統開銷,編譯器在編譯此類程序代碼時,它會為這兩種情況準備很多的額外代碼。一般第2種情況,被稱為“局部展開(LocalUnwinding)”;第3種情況,被稱為“全局展開(GlobalUnwinding)”。在后面闡述SEH實現的時候會詳細分析到這一點。

第3種情況,也即由于出現異常而導致的“全局展開”,對于程序員而言,這也許是無法避免的,因為你在利用異常處理機制提高程序可靠健壯性的同時,不可避免的會引起性能上其它的一些開銷。呵呵!這世界其實也算瞞公平的,有得必有失。

  但是,對于第2種情況,程序員完全可以有效地避免它,避免“局部展開”引起的不必要的額外開銷。實際這也是與結構化程序設計思想相一致的,也即一個程序模塊應該只有一個入口和一個出口,程序模塊內盡量避免使用goto語句等。但是,話雖如此,有時為了提高程序的可讀性,程序員在編寫代碼時,有時可能不得不采用一些與結構化程序設計思想相悖的做法,例如,在一個函數中,可能有多處的return語句。針對這種情況,SEH提供了一種非常有效的折衷方案,那就是__leave關鍵字所起的作用,它既具有像goto語句和return語句那樣類似的作用(由于檢測到某個程序運行中的錯誤,需要馬上離開當前的 __try塊作用域),但是又避免了“局部展開” 的額外開銷。還是看個例子吧!代碼如下:

#include <stdio.h>void test(){puts(“hello”);__try{int* p;puts(“__try塊中”);// 直接跳出當前的__try作用域__leave;p = 0;*p = 25;}__finally{// 這里會被執行嗎?當然puts(“__finally塊中”);}puts(“world”);}void main(){__try{test();}__except(1){puts(“__except塊中”);}}

上面的程序運行結果如下:

hello
__try塊中
__finally塊中
world
Press any key to continue

以上所述是小編給大家介紹的C++ 中try finally關鍵字的相關知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91社影院在线观看| 亚洲综合在线播放| 精品一区二区三区四区在线| 亚洲免费小视频| 97精品久久久中文字幕免费| 精品国产乱码久久久久久天美| 色悠悠久久88| 97超级碰在线看视频免费在线看| 日韩欧美国产中文字幕| 欧美视频中文在线看| 精品一区二区三区三区| 一本色道久久综合亚洲精品小说| 日韩av大片免费看| 久久6精品影院| 久久99青青精品免费观看| 亚洲一区亚洲二区| 亚洲国产成人爱av在线播放| 欧美与黑人午夜性猛交久久久| 一区二区三区www| 亚洲影影院av| 久久69精品久久久久久久电影好| 成人精品久久久| 国产精品成av人在线视午夜片| 中文字幕日本精品| 成人av番号网| 国产主播精品在线| 欧美日韩国产丝袜另类| 精品一区二区三区四区| 国产婷婷色综合av蜜臀av| 欧美日韩在线观看视频小说| 日韩欧美在线免费| 疯狂欧美牲乱大交777| 91久久精品久久国产性色也91| 青青青国产精品一区二区| 91国产在线精品| 亚洲精品v天堂中文字幕| 中文字幕在线看视频国产欧美在线看完整| 日本久久久久久久| 精品爽片免费看久久| 国产精品扒开腿做爽爽爽男男| 亚洲精品免费一区二区三区| 日韩av手机在线观看| 精品久久香蕉国产线看观看亚洲| 黄色一区二区在线观看| 国产欧美日韩中文字幕在线| 精品欧美aⅴ在线网站| 在线视频日韩精品| 狠狠久久五月精品中文字幕| 欧美激情高清视频| 亚洲大尺度美女在线| 国产精品视频999| 久久久中文字幕| 欧美成人免费观看| 亚洲天堂免费观看| 精品福利在线观看| 日韩中文字幕网站| 欧美日韩美女在线观看| 国产精品成人一区二区三区吃奶| 午夜美女久久久久爽久久| 日韩精品小视频| 日韩二区三区在线| 欧美日韩亚洲天堂| 91精品国产91久久久久福利| 亚洲人成电影在线观看天堂色| 国产精品久久久久久久久影视| 国产精品91视频| 亚洲欧美999| 国产一区二区三区精品久久久| 欧美在线亚洲在线| 色琪琪综合男人的天堂aⅴ视频| 神马国产精品影院av| 95av在线视频| 综合国产在线视频| 96sao精品视频在线观看| 日韩欧美福利视频| 亚洲第一精品夜夜躁人人爽| 蜜臀久久99精品久久久久久宅男| 久久久久99精品久久久久| 国产视频自拍一区| 亚洲第一免费播放区| 日韩综合视频在线观看| 日本91av在线播放| 欧美超级乱淫片喷水| 日韩欧美国产免费播放| 欧美日韩国产综合视频在线观看中文| 国产欧美亚洲视频| 国产欧美亚洲视频| 国内精品免费午夜毛片| 亚洲激情中文字幕| 日韩经典中文字幕| 2019日本中文字幕| 国产一区二区三区在线观看视频| 午夜免费日韩视频| 两个人的视频www国产精品| 国产www精品| 日本欧美爱爱爱| 国产精品视频精品视频| 国产一区二区丝袜高跟鞋图片| 九九视频直播综合网| 亚洲图中文字幕| 久久在精品线影院精品国产| 欧美肥老太性生活视频| 日韩精品中文在线观看| 亚洲美女精品久久| 国产午夜精品美女视频明星a级| 久久久成人精品视频| 欧美成人精品在线播放| 亚洲欧美日韩一区二区在线| 亚洲福利在线播放| 欧美日韩xxx| 欧美黑人性猛交| 亚洲国产精久久久久久| 成人国产在线视频| 91久久在线播放| 日韩成人久久久| 伊人久久男人天堂| 国产精品福利在线观看网址| 欧美成人午夜激情| 久久久久久久一区二区| 久久福利网址导航| 国产精品欧美激情| 欧美乱大交xxxxx另类电影| 日韩免费电影在线观看| 98精品国产自产在线观看| 日韩欧美第一页| 亚洲高清免费观看高清完整版| 亚洲国产第一页| 美女久久久久久久久久久| 欧美日韩中文字幕综合视频| 欧美性猛交xxxx免费看漫画| 2019中文字幕全在线观看| 清纯唯美日韩制服另类| 久久免费国产视频| 红桃av永久久久| 亚洲精品国产免费| 日韩成人中文电影| 亚洲欧美国产日韩中文字幕| 亚洲最大的免费| 亚洲天堂免费在线| 性色av一区二区咪爱| 伊人久久久久久久久久久| 日韩一区二区三区国产| 欧美日韩亚洲一区二| 自拍偷拍亚洲区| 亚洲日本中文字幕| 成人av资源在线播放| 欧美床上激情在线观看| 亚洲男人天堂网站| 最近免费中文字幕视频2019| 91久久精品国产91久久| 亚洲第一视频在线观看| 97精品视频在线播放| 亚洲色图狂野欧美| 久久成人精品一区二区三区| 91精品视频观看| 久久精品这里热有精品| 亚洲国产成人精品女人久久久| 亚洲一区二区久久久久久| 日韩av免费看| 精品久久久久久久久久ntr影视| 欧美午夜精品久久久久久人妖| 一本色道久久综合狠狠躁篇的优点| 亚洲一区二区精品| 日韩av成人在线|