【C++ 異常處理】

C++ 異常處理

  • ■ C++ 異常處理簡介
  • ■ throw (拋出異常)
  • ■ catch (捕獲異常)
  • ■ try()
  • ■ C++ 標準的異常

■ C++ 異常處理簡介

C++ 異常處理涉及到三個關鍵字:try、catch、throw。

屬性描述
throw當問題出現時,程序會拋出一個異常。這是通過使用 throw 關鍵字來完成的。
catch在您想要處理問題的地方,通過異常處理程序捕獲異常。catch 關鍵字用于捕獲異常。
trytry 塊中的代碼標識將被激活的特定異常。它后面通常跟著一個或多個 catch 塊。

■ throw (拋出異常)

throw 語句在代碼塊中的任何地方拋出異常。
throw 語句的操作數可以是任意的表達式,表達式的結果的類型決定了拋出的異常的類型。

double division(int a, int b)
{if( b == 0 ){throw "Division by zero condition!";}return (a/b);
}

■ catch (捕獲異常)

catch 塊跟在 try 塊后面,用于捕獲異常。
您可以指定想要捕捉的異常類型,這是由 catch 關鍵字后的括號內的異常聲明決定的。

try
{// 保護代碼
}catch( ExceptionName e )
{// 處理 ExceptionName 異常的代碼
}

想讓 catch 塊能夠處理 try 塊拋出的任何類型的異常,則必須在異常聲明的括號內使用省略號 …

try
{// 保護代碼
}catch(...)
{// 能處理任何異常的代碼
}

示例一:拋出了一個類型為 const char 的異常*

#include <iostream>
using namespace std;double division(int a, int b)
{if( b == 0 ){throw "Division by zero condition!";}return (a/b);
}int main ()
{int x = 50;int y = 0;double z = 0;try {z = division(x, y);cout << z << endl;}catch (const char* msg) {cerr << msg << endl;} return 0;
}編譯和執行時,它會產生下列結果:
Division by zero condition!

■ try()

try 塊中放置可能拋出異常的代碼,try 塊中的代碼被稱為保護代碼。

try
{// 保護代碼
}catch( ExceptionName e1 )
{// catch 塊
}catch( ExceptionName e2 )
{// catch 塊
}catch( ExceptionName eN )
{// catch 塊
}
如果 try 塊在不同的情境下會拋出不同的異常,這個時候可以嘗試羅列多個 catch 語句,用于捕獲不同類型的異常。

■ C++ 標準的異常

www.runoob.com C++ 標準的異常

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717387.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717387.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717387.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【LeetCode-1143】最長公共子序列(動歸)

目錄 題目描述 解法1&#xff1a;動態規劃 代碼實現 題目鏈接 題目描述 給定兩個字符串 text1 和 text2&#xff0c;返回這兩個字符串的最長公共子序列的長度。 一個字符串的 子序列 是指這樣一個新的字符串&#xff1a;它是由原字符串在不改變字符的相對順序的情況下刪除…

Linux系統這些壓測工具,你用過嗎?

作為一名運維人員,你是否遇到過這種場景?需要用工具測試系統cpu或內存占用高來觸發告警,或者通過壓測測試服務的并發能力。作為運維工程師,也可以通過這些命令復現故障場景。那么通過本文可以讓你掌握常用的測試命令和工具。 更多技術博客,請關注微信公眾號:運維之美 一、…

LIDAR2Camera 手動標定

參考&#xff1a;搞懂了&#xff01;原來激光雷達和相機的內外參是這樣標定的_嗶哩嗶哩_bilibili 代碼下載&#xff1a;SensorsCalibration/lidar2camera at master PJLab-ADG/SensorsCalibration (github.com)

社區店選址評估:利用大數據選址的技巧與策略

在當今數字化的時代&#xff0c;利用大數據進行社區店選址評估已成為一種高效、科學的方法。作為一名開鮮奶吧5年的創業者&#xff0c;我將分享一些利用大數據選址的技巧與策略&#xff0c;幫助你找到最適合的店鋪位置。 1、確定目標商圈 在選址之前&#xff0c;首先要明確自己…

涉及主頁面內嵌iframe中的列表數據的保存

場景&#xff1a;主表 : 附表 1 : m&#xff0c;同一個頁面&#xff0c;共同使用一個保存按鈕進行兩個表的數據保存&#xff0c;頁面中間有個查詢按鈕&#xff0c;可以對子iframe頁面的內容進行刷新 流程項目頁面內嵌了個子iframe&#xff0c;項目頁面表單數據提交保存是一個…

爬蟲的一些小技巧總結

一、在爬蟲中&#xff0c;爬取的數據類型如下 1.document:返回的是一個HTML文檔 2.png:無損的圖片&#xff0c;jpg:壓縮后的圖片,wbep:有損壓縮&#xff0c;比png差&#xff0c;比jpg好 3.avgxml圖像編碼字符串 4.script:腳本文件&#xff0c;依據一定格式編寫的可執行的文…

【大廠AI課學習筆記NO.58】(11)混淆矩陣

混淆矩陣&#xff08;confusion matrix&#xff09;—— 混淆矩陣&#xff08;Confusion Matrix&#xff09;是人工智能領域&#xff0c;特別是在機器學習和深度學習中&#xff0c;用于衡量分類模型性能的重要工具。它通過統計分類模型的真實分類與預測分類之間的結果&#xf…

【python debug】python常見編譯問題解決方法_2

序言 記錄python使用過程中碰到的一些問題及其解決方法上一篇&#xff1a;python常見編譯問題解決方法_1 1. PermissionError: [Errno 13] Permission denied: ‘/lostfound’ 修改前&#xff1a; 修改后&#xff08;解決&#xff09;&#xff1a; 此外&#xff0c;可能文件夾…

leetcode 熱題 100_接雨水

題解一&#xff1a; 按列求&#xff1a;分別考慮每一列的雨水高度&#xff0c;某列的雨水高度只與其左側最高墻和右側最高墻有關&#xff0c;一種情況是該列比左右側的墻都低&#xff0c;則根據木桶效應該列雨水高度為min(左側墻高&#xff0c;右側墻高)-列高&#xff0c;而其余…

智能駕駛及相關零部件攝像頭毫米波雷達激光雷達和芯片滲透率

一、總體情況 乘聯會數據顯示&#xff0c;1月1日至1月28日&#xff0c;全國乘用車廠商新能源車批發銷量為56.7萬輛&#xff0c;同比增長76%&#xff0c;環比下降38%&#xff1b;國內新能源車市場零售銷量為59.6萬輛&#xff0c;同比增長92%&#xff0c;環比下降24%。 二、銷…

考研總計劃(基礎篇)

分為數學&#xff0c;專業課&#xff0c;英語三個部分 數學規劃表 高數基礎&#xff1a;3月初到4月15號 具體實行計劃&#xff1a;分為看課日和寫題日 看課日:早上10點到12點半看課&#xff0c;19:30到21:30繼續看課。 寫題日:早上10點到12點半復習前一天的題目&#xff0…

【word】引用文獻如何標注右上角

一、在Word文檔中引用文獻并標注在右上角的具體步驟如下 1、將光標移動到需要添加文獻標注的位置&#xff1a; 2、在文檔上方的工具欄中選擇“引用”選項&#xff1a; 3、點擊“插入腳注”或“插入尾注”&#xff1a; ①如果選擇的是腳注&#xff0c;則腳注區域會出現在本頁的…

多路轉接之epoll

常用的三個API&#xff1a; epoll_create(); //例如 int epfd epoll(10);創建一棵有10個結點的紅黑樹&#xff0c;注意&#xff1a;這個數只是對內核建議的數值&#xff0c;內核參照這個參數去構建epoll_ctrl();//參數2 op可以取值 EPOLL_CTL_ADD/MOD/DELevents:EPOLLIN/…

Professor教誨-學術筆記1

關于指導學生 自己帶的學生&#xff0c;要把文章從頭到尾檢查好了&#xff0c;再發給professor要至少留給professor一周的時間改文章&#xff0c;太遲了不如放棄DDL要在合作中&#xff0c;充分尊重合作者認真對待向別人求推薦信這件事&#xff0c;別人找你推薦也要慎重&#x…

成為大佬之路--linux軟件安裝使用第000000025篇--linux docker安裝mysql

安裝 1.拉取鏡像 docker pull centos/mysql-57-centos7 2.啟動mysql docker run -di --nametensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 centos/mysql-57-centos7

Pyglet圖形界面版2048游戲——詳盡實現教程(上)

目錄 Pyglet圖形界面版2048游戲 一、色塊展示 二、繪制標題 三、方陣色塊 四、界面布局 五、鍵鼠操作 Pyglet圖形界面版2048游戲 一、色塊展示 準備好游戲數字的背景顏色&#xff0c;如以下12種&#xff1a; COLOR ((206, 194, 180, 255), (237, 229, 218, 255), (23…

常見Vue原理面試題

1. Vue的響應式原理是什么&#xff1f;請詳細說明Object.defineProperty()和Proxy的區別和用法。 響應式原理&#xff1a;Vue中采用了數據劫持的方式&#xff0c;通過Object.defineProperty()函數來監聽數據變化&#xff0c;并在數據變化時觸發對應的更新函數。 Object.define…

SpringCloud負載均衡源碼解析 | 帶你從表層一步步剖析Ribbon組件如何實現負載均衡功能

目錄 1、負載均衡原理 2、源碼分析 2.1、LoadBalanced 2.2、LoadBalancerClient 2.3、RibbonAutoConfiguration 2.4、LoadBalancerAutoConfiguration 2.5、LoadBalancerIntercepor? 2.6、再回LoadBalancerClient 2.7、RibbonLoadBalancerClient 2.7.1、DynamicServe…

OpenCV 4基礎篇| OpenCV圖像的拼接

目錄 1. Numpy (np.hstack&#xff0c;np.vstack)1.1 注意事項1.2 代碼示例 2. matplotlib2.1 注意事項2.2 代碼示例 3. 擴展示例&#xff1a;多張小圖合并成一張大圖4. 總結 1. Numpy (np.hstack&#xff0c;np.vstack) 語法結構&#xff1a; retval np.hstack(tup) # 水平…

工作日記:JavaScript fill() 方法

定義 fill() 方法用于將一個固定值替換數組的元素。 語法 array.fill(value, start, end) value&#xff1a;必填。要填充的值 start&#xff1a;可選。開始填充位置 end&#xff1a;可選。結束填充位置&#xff08;默認是數組的長度&#xff1a;array.length&#xff09;…