在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取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

    文章

    4346

    瀏覽量

    62971
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73857
  • 代碼
    +關注

    關注

    30

    文章

    4825

    瀏覽量

    69049
收藏 人收藏

    評論

    相關推薦

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

    寄存器指令集中斷、異常處理機制
    發表于 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 ?2047次閱讀
    Cortex-M3的<b class='flag-5'>異常</b><b class='flag-5'>處理機制</b>分析

    如何處理Linux下C++異常

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

    C++異常機制探討

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

    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>的詳細資料說明

    C++程序設計教程之C++工具的詳細資料說明

    本文檔的詳細介紹的是C++程序設計教程之C++工具的詳細資料說明主要內容包括了:1. 異常處理,2. 命名空間,3. 使用早期的函數庫
    發表于 03-14 16:39 ?4次下載
    <b class='flag-5'>C++</b><b class='flag-5'>程序</b>設計教程之<b class='flag-5'>C++</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 ?3226次閱讀

    總結: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 ?675次閱讀

    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>的應用
    主站蜘蛛池模板: a毛片成人免费全部播放 | 午夜色网| 成年毛片 | 欧美日韩色综合网站 | 国产亚洲精品久久午夜 | 国产成人综合日韩精品婷婷九月 | 色综合国产| 天天做天天爱夜夜大爽完整 | 国产精品久久久久久久人热 | 国产美女久久 | 美女被艹视频网站 | 18男女很黄的视频 | 美女视频黄免费 | 欧美精品国产第一区二区 | 午夜在线观看网站 | 欲妇放荡叫床很浪的小说 | 久久久婷婷 | 一级毛片真人免费播放视频 | 69pao强力打造免费高清 | 2019天天干天天操 | 免费四影虎ww4hu10 | 亚洲欧美日韩色图 | 欧美一级日韩一级亚洲一级 | 岛国午夜精品视频在线观看 | 港台无码 | 国产卡1卡2卡三卡网站免费 | 日韩系列 | 爱爱永久免费视频网站 | 亚洲国产日韩欧美在线as乱码 | 亚洲高清成人 | 精品三级网站 | 免费a级午夜绝情美女视频 免费jlzzjlzz在线播放视频 | 色综合久 | 天天视频官网天天视频在线 | 国产香蕉一区二区精品视频 | 欧美女同网站 | 久久久久无码国产精品一区 | 亚洲高清毛片 | 男人天堂资源网 | 色视频网址 | 黄色精品 |