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

歡迎光臨散文網(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)行捕獲?的評論 (共 條)

分享到微博請遵守國家法律
双鸭山市| 嫩江县| 海阳市| 建湖县| 胶州市| 东辽县| 辽阳市| 朔州市| 东乡县| 吉林省| 绥棱县| 咸阳市| 华池县| 揭阳市| 长泰县| 山西省| 富平县| 门头沟区| 扎囊县| 江西省| 苏尼特左旗| 南华县| 龙陵县| 桃江县| 广灵县| 仪陇县| 怀远县| 宿州市| 商南县| 中卫市| 清流县| 略阳县| 石狮市| 汕尾市| 买车| 上饶县| 台江县| 古交市| 江城| 淳安县| 沈丘县|