色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++程序異常處理機制是什么

汽車電子技術 ? 來源:嵌入式情報局 ? 作者: 情報小哥 ? 2023-02-21 10:37 ? 次閱讀

大家好,我是情報小哥~

1、什么是異常處理

有經驗的朋友應該知道,在正常的C和C++編程過程中難免會碰到程序不按照原本設計運行的情況。

最常見的有除法分母為零,數組越界,內存分配失效、打開相應文件失敗等等。

一個程序的健壯不僅僅有算法上的優越性,還存在程序對各種異常情況的識別和處理能力,如果對這些異常沒有得到較好的處理,就非常容易引起程序的奔潰。

那么C++設計了一套異常處理機制,一方面能夠使得異常處理和正常運行代碼進行分離,使得程序更加模塊化;另一方面,C++的異常處理可以不需要異常處理在異常發生時的同一個函數,而是可以在更上層合適的位置進行處理。

下面一起看看C++的異常處理:

2、異常處理語法

C++異常處理涉及到3個關鍵字:

throw---拋出一個異常,帶參數
try---用于標識可能會出現異常的代碼段
catch--是用于標識異常處理的代碼段

下面小哥就一個例子來說明一下他們的使用方法:

#include 
using namespace std;

int main(int argc, char** argv) {
 
 try{
  
  cout<<"Run Normal"<throw 2;  //拋出異常
  cout<<"No arrived"<catch(int a) //異常代碼處理塊
 {
  cout<<"Error : "<return 0;
}

try所標識的為程序正常運行的代碼段,所以首先打印"Run Normal"字符串,由于遇到了throw拋出此處程序存在異常,程序便會跳出try所標識的代碼段,然后尋找catch所標識的異常處理代碼段,這便會匹配到了正下方的catch輸出"Error : 2”字樣。

3、try-catch注意事項

上面的例子挺簡單的,不過異常處理機制還有很多值得注意的使用方法:

1、當throw拋出異常以后,會以函數調用的方式一層一層的尋找相應的catch,如果當前函數層沒有找到會立馬返回到上層函數進行查找,如果一直沒有找到程序就會停止運行。

圖片

下面寫了一個demo驗證一下:

#include 
using namespace std;


void FunctionDown(void)
{
 cout<<"Run Normal"<throw 2;  //拋出異常
 cout<<"No arrived"<void FunctionMid(void)
{
 
 FunctionDown();
}

void FunctionUp(void)
{
 try
 {
  FunctionMid();
 }
 
 catch(int a) //異常代碼處理塊
 {
  cout<<"Error : "<int main(int argc, char** argv) {
 
 FunctionUp();
 
 return 0;
}

該程序最后運行的結果與前面的是一致的,這樣函數內部的異常都可以拋出來最后統一處理。

2、同一個try可以帶多個catch用于不同異常的處理。且不同的catch依次匹配異常參數,匹配后便會執行,否則會繼續往上層進行catch匹配。

老規矩,寫個代碼驗證一下:

#include 
using namespace std;


void FunctionDown(void)
{
 cout<<"Run Normal"<//throw "bug";  //拋出異常
 throw (float)3.14;  //拋出異常
 cout<<"No arrived"<void FunctionMid(void)
{
 
 FunctionDown();
}

void FunctionUp(void)
{
 try
 {
  FunctionMid();
 }
 
 catch(int a) //異常代碼處理塊
 {
  cout<<"Error : "<int main(int argc, char** argv) {
 
 try
 {
  FunctionUp();
 }
 
 catch(float a) //異常代碼處理塊
 {
  cout<<"Error : "<catch(char const *str) //異常代碼處理塊
 {
  cout<<"Error : "<return 0;
}

最終由于FunctionMid內的catch的參數無法匹配上,則繼續往上層進行catch匹配,直到匹配到main函數中的catch(float a)才成功。

最 后

好了,這里小哥就簡單介紹了C++異常處理try-catch,本系列文章后續還會更新,記得關注學習哦。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4365

    瀏覽量

    63857
  • C++
    C++
    +關注

    關注

    22

    文章

    2116

    瀏覽量

    74575
  • 代碼
    +關注

    關注

    30

    文章

    4880

    瀏覽量

    70004
收藏 0人收藏

    評論

    相關推薦

    寄存器/指令集/中斷、異常處理機制介紹

    寄存器指令集中斷、異常處理機制
    發表于 01-13 07:56

    INtime RTOS內部的關鍵處理機制是什么

    INtime RTOS內部的關鍵處理機制是什么?INtime RTOS內部的關鍵處理機制有哪些相關的應用案例?
    發表于 09-29 06:28

    單片機的中斷處理機制

    單片機的中斷處理機制什么是中斷?為什么要使用中斷(中斷的特點)什么是中斷源?中斷源有哪些中斷機制的流程中斷優先級多個中斷同時發生什么是中斷?當CPU執行程序時,由于發生了某種隨機的事件(內部或外部
    發表于 12-07 11:14

    Cortex-M3的異常處理機制分析

    Cortex-M3的異常處理機制分析  詳細闡述CortexM3異常的分類、優先級、進入和退出,以及在CortexM3異常處理機制
    發表于 03-29 15:07 ?2125次閱讀
    Cortex-M3的<b class='flag-5'>異常</b><b class='flag-5'>處理機制</b>分析

    如何處理Linux下C++異常

     在C++中,無論何時在處理程序內捕獲一個異常,關于該異常來源的信息都是不為人知的。異常
    發表于 07-15 09:44 ?2064次閱讀

    C++異常機制探討

    C++異常機制為我們提供了更好的解決方法。異常處理的基本思想是:當出現錯誤時拋出一個異常,希望
    發表于 11-23 11:04 ?3534次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>異常</b><b class='flag-5'>機制</b>探討

    MFC中Windows消息處理機制解析

    讀了候老師的《深入淺出MFC》后,感覺到Visual C++的Application FrameWork十分精制。在以前,我對SDI結構處理消息有一定的認識,但對于模式對話框的消息機制不了解,讀了
    發表于 11-07 10:36 ?1次下載

    Java中的異常處理機制

    編寫異常處理代碼的建議 如果你寫方法時沒辦法處理未知意外情況,可以考慮在方法的聲明中用throws關鍵字把檢查型異常傳播出去,強制要求客戶端程序
    發表于 03-26 11:44 ?6次下載

    Java程序設計教程之異常處理的詳細資料說明

    本文檔的詳細介紹的是Java程序設計教程之異常處理的詳細資料說明主要內容包括了:1 什么是異常,2異常
    發表于 02-22 10:27 ?13次下載
    Java<b class='flag-5'>程序</b>設計教程之<b class='flag-5'>異常</b><b class='flag-5'>處理</b>的詳細資料說明

    Java高級編程之異常處理

    對于我們所開發的程序而言,錯誤是無法避免的。本文闡述了如何運用java的異常處理機制為我們控制和處理異常的出現,從而保證
    發表于 07-08 16:14 ?19次下載
    Java高級編程之<b class='flag-5'>異常</b><b class='flag-5'>處理</b>

    C++異常機制底層原理與實際應用詳細說明

    我們在對 vector 做 push 操作的時候,或者對某個指針做 new 操作的時候,如果沒有做異常處理,一旦系統內存不夠用了,程序是會被 terminate 掉的。這就要求我們熟悉 C++
    的頭像 發表于 11-22 11:34 ?3333次閱讀

    總結:ARM的異常處理機制分析資料下載

    電子發燒友網為你提供總結:ARM的異常處理機制分析資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-15 08:45 ?7次下載
    總結:ARM的<b class='flag-5'>異常</b><b class='flag-5'>處理機制</b>分析資料下載

    基于ARM核的嵌入式系統異常處理機制的設計

    電子發燒友網站提供《基于ARM核的嵌入式系統異常處理機制的設計.pdf》資料免費下載
    發表于 10-27 09:00 ?0次下載
    基于ARM核的嵌入式系統<b class='flag-5'>異常</b><b class='flag-5'>處理機制</b>的設計

    介紹C語言中錯誤處理異常處理的一些常用的方法和策略

    C語言是一種低級的、靜態的、結構化的編程語言,它沒有提供像C++或Java等高級語言中的異常處理機制,例如try-catch-finally等。
    的頭像 發表于 02-28 14:25 ?840次閱讀

    TI C64x+ DSP內核異常處理機制的應用

    電子發燒友網站提供《TI C64x+ DSP內核異常處理機制的應用.pdf》資料免費下載
    發表于 08-28 11:54 ?0次下載
    TI <b class='flag-5'>C</b>64x+ DSP內核<b class='flag-5'>異常</b><b class='flag-5'>處理機制</b>的應用
    主站蜘蛛池模板: 日本xxxx8888 | 小便japanesewctv| 最新亚洲一区二区三区四区 | 国产亚洲精品久久久999密臂 | H狠狠躁死你H | 第一次处破女完整版电影 | 免费一区二区三区久久 | 美国色吧影院 | 2017最新伦理伦理片67 | 一个人免费播放高清在线观看 | 簧片在线观看 | 亚洲 日韩 自拍 视频一区 | 久久成人永久免费播放 | 亚洲熟妇无码乱子AV电影 | 亚洲精品在线播放视频 | 国产精品久久久久久影院 | 国产人妻麻豆蜜桃色 | 99精品欧美一区二区三区美图 | 日韩AV无码一区二区三区不卡毛片 | 9久久免费国产精品特黄 | 调教女M屁股撅虐调教 | 99久久久A片无码国产精 | 美女胸被男子强捏视频 | 国产精品国产三级国产专区53 | 草比比过程图 | 国产精品亚洲第一区二区三区 | 黑人强伦姧人妻日韩那庞大的 | 亚洲国产系列一区二区三区 | 三叶草成人 | 2021国产精品视频 | 亚洲精品乱码电影在线观看 | 大迪克黑人异族 | 国产精品成人观看视频免费 | 在线亚洲精品福利网址导航 | 久久九九有精品国产23百花影院 | 春水福利app导航 | 蜜芽在线播放免费人成日韩视频 | 婷婷综合亚洲爱久久 | 午夜宅宅伦电影网中文字幕 | 日韩欧美精品有码在线播放免费 | 体内精69xxxxxx喷潮 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品