最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

知識分享:C語言如何對異常進(jìn)行捕獲?

2022-02-19 16:37 作者:C語言編程__Plus  | 我要投稿

C++中可以使用try...catch對異常進(jìn)行捕獲,C語言呢?可能很多人都不知道,C語言中也有類似的接口,可以保存程序運(yùn)行的位置然后在特定的位置進(jìn)行恢復(fù)使得程序能夠回到先前保存的地方。而這整個(gè)功能的主要依靠setjmp和longjmp來實(shí)現(xiàn)。

1 int setjmp(jmp_buf env)

setjmp需要被先調(diào)用,調(diào)用之后,setjmp就保存了一份程序的計(jì)數(shù)器和當(dāng)前棧頂指針,當(dāng)然,根據(jù)需要也可以保存一些變量的初始化信息。返回返回值為0。?使用方法如下面代碼所示:


2 void longjmp(jmp_buf?env,int val)

在調(diào)用了setjmp后調(diào)用longjmp可以恢復(fù)保存的值并有效的將setjmp保存的計(jì)數(shù)器和棧信息恢復(fù)到之前的狀態(tài),這個(gè)過程也是堆棧展開的過程。因?yàn)閘ongjmp是回到原來保存程序狀態(tài)的位置,因此也可以稱之為從哪里來到哪里去。在上面的代碼中使用longjmp后,程序執(zhí)行效果如下所示:


如上,在調(diào)用TestSuit后,函數(shù)里面因?yàn)檎{(diào)用了longjmp因此程序狀態(tài)恢復(fù)到setjmp的位置,又因?yàn)樵趌ongjmp的第二個(gè)參數(shù)設(shè)置了setjmp的返回值,因此TestSuit函數(shù)中l(wèi)ongjmp后的代碼將不被執(zhí)行。程序返回到main函數(shù),執(zhí)行if條件值為真后的語句。上面代碼的運(yùn)行結(jié)果為:


- EOF -

寫在最后:對于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

微信公眾號:C語言編程學(xué)習(xí)基地

C語言零基礎(chǔ)入門教程(83集全)

整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!

編程學(xué)習(xí)書籍分享:


知識分享:C語言如何對異常進(jìn)行捕獲?的評論 (共 條)

分享到微博請遵守國家法律
定南县| 三明市| 都昌县| 焦作市| 邹城市| 时尚| 梨树县| 图片| 太和县| 黄龙县| 黄山市| 铜川市| 崇左市| 余干县| 苍山县| 永修县| 宁海县| 手机| 武鸣县| 陵川县| 凤庆县| 华亭县| 白山市| 和平区| 政和县| 景德镇市| 多伦县| 凤冈县| 辉南县| 桐庐县| 南皮县| 宜都市| 花莲市| 淄博市| 肇东市| 平阴县| 金寨县| 津南区| 肥城市| 休宁县| 土默特左旗|