《C++ Primer 第五版》(第5.1-5.6節) ——異常處理機制(try語句塊,throw表達式和catch異常捕捉處理單元)

1. 異常處理機制

? ? ? ? ? C++中使用try,throw和catch三個關鍵字來實現異常的觸發、拋出和處理的功能,具體通用語法形式如下:

? ? ? ? ? ? ? ? ? ? try{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(true)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? normal program-statements;//沒有觸發異常時候執行的代碼

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(false)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? throw(exception);? ? ? ? //出現錯誤,拋出的異常

? ? ? ? ? ? ? ? ? ? ?}catch(exception-declaration)? ?//異常捕捉

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?handler-statements;? ? ? //異常處理

? ? ? ? ? ? ? ? ? ??}.....

? ? ? ? ?C++標準庫定義了一組類,用于處理標準庫中遇到的問題(支持創建/拷貝/賦值操作),具體如下:

? ? ? ? ? ? ? ? ? ?頭文件<exception> 異常類exception 只報告異常,不提供其他信息。默認初始化

? ? ? ? ? ? ? ? ? ?頭文件<new> 異常類 bad_alloc? ?默認初始化

? ? ? ? ? ? ? ? ? ?頭文件<type_Info> 異常類 bad_cast? ?默認初始化

? ? ? ? ? ? ? ? ? ?頭文件<stdexcept> 異常類,如下所示:string/C風格字符串初始化

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? 異常類型定義了一個what的成員函數,無參數,返回值為C風格字符串,和異常類型相關。異常類采用顯示初始化的,則返回顯示初始化的值,異常類是采用默認初始化的,內容由編譯器決定。

2.case,范圍for語句,continue知識點總結

? ? ? ? ? ?在switch-case語句中,如果每個case語句后面不加上break中止符,則case語句會跨越標簽繼續執行下去。例如:

? ? ? ? ? ? ? ? ? char ch;cin>>ch;

? ? ? ? ? ? ? ? ? switch(ch){

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case 'a' : ++acnt;? ? ? ?//如果輸入的ch字符是‘a’,判斷第一個case語句滿足,執行完++acnt后

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case 'e' : ++ecnt;? ? ? //會跳過第二個case語句,執行++ecnt;

? ? ? ? ? ? ? ? ? }

? ? ? ? 在switch-case語句中,case標簽不能單獨出現,后面應該跟上一條語句或者另外一個case標簽。也就是說,case標簽后面可以不接語句,但是冒號必須保留。

? ? ? ? 范圍for語句中的expression(范圍for語句格式:for(declaration : expression) statement)必須是一個序列,其中序列的頭指針和尾后指針已經確定,因此在使用范圍for語句的時候,不允許往序列中增加或刪除元素(任何破壞頭指針和尾后指針的行為都不允許)

? ? ? ?continue不允許直接使用在switch-case中,具體原因是continue是跳出當前循環并進入下一次循環,而是switch-case只有一次循環操作。

?

? ? ? ? ? ? ? ? ? ?

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

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

相關文章

《C++ Primer 第五版》(第6.1~6.3節) 函數形參和實參傳遞,可變參數列表和函數返回值

1.函數形參和實參傳遞問題 函數參數傳遞有兩種&#xff1a;值傳遞(變量&#xff0c;指針&#xff09;,引用傳遞(使用別名&#xff09;。 在形參和實參的傳遞過程中&#xff0c;牽涉到大的類類型對象、容器類型對象或者不支持拷貝操作的對象時&#xff0c;不適合采用值傳遞&…

461. 漢明距離 golang

Me 異或取出1的個數求取異或后1的個數返回 func hammingDistance(x int, y int) int {x x ^ yvar count 0for x ! 0 {x x & (x - 1)count}return count }

《C++ Primer 第五版》(第6.3~6.7節)——返回指向數組/函數的指針,函數重載,默認形參、inline函數和constexpr函數

1.返回指向數組/函數的指針 顧名思義&#xff0c;就是函數返回值為指向數組/函數的指針。 數組的性質&#xff1a;不能被拷貝&#xff0c;函數也不能返回數組。但可以返回數組指針/引用&#xff0c;聲明一個返回數組指針的函數&#xff0c;有四種方式&#xff0c;一種是直接聲明…

136. 只出現一次的數字 golang

Me 1. 先排序就好做了 執行用時 :16 ms, 在所有 Go 提交中擊敗了27.90%的用戶 內存消耗 :4.7 MB, 在所有 Go 提交中擊敗了100.00%的用戶func singleNumber(nums []int) int {sort.Ints(nums)for i:0; i < len(nums); i {if i len(nums) - 1 {return nums[i]}if nums[i] …

《C++ Primer 第五版》(第1~6章總結)

1.C采用標準庫文件iostream定義的兩個對象來實現IO機制。 2.代碼注釋應解釋關鍵數據的變量含義和代碼完成了什么功能&#xff0c;力求簡潔易懂。 3.正確理解初始化和賦值&#xff0c;聲明和定義的含義&#xff1f;初始化是在定義對象的時候同時賦值&#xff0c;賦值是定義對象…

268. 缺失數字 golang

Me 首項加末項乘以項數/2.就是總和。然后剪掉nums里面的數組和 func missingNumber(nums []int) int {var sum intlens : len(nums)for _, value : range nums {sum value}return ((1 lens) * lens) / 2 - sum }

使用touch更新文件的時間

#&#xff01;/bin/bashfunction read_dir() {for file in ls $1doif[-d $1"/"$file]thenread_dir $1"/"$fileelseecho $1"/"$filetouch $1"/"$filefidone }read_dir ./

231. 2的冪 golang

Me func isPowerOfTwo(n int) bool {return n > 0 && (n & (n-1)) 0 }

linux/windows上STM32固件燒寫工具的開發demo

1.主要實現功能&#xff1a;完成對HEX和DFU文件的燒寫&#xff0c;顯示燒寫的進度等功能 2.開發工具:Qt creator4.9.0 3.開發系統平臺&#xff1a;windows系統和linux系統兩套平臺 4.具體開發步驟&#xff1a; 1&#xff09;設計整體的界面&#xff0c;包括文件選擇界面(dfu和h…

338. 比特位計數 golang

Me func countBits(num int) []int {result : make([]int, num1)for i:0; i<num; i {result[i] numberOne(i)}return result }func numberOne(x int) int {if x 0 {return 0}var count intfor x ! 0 {x x & (x - 1)count}return count }

Qt使用qss文件管理stylesheet

內容總結簡介&#xff1a; 1&#xff09;使用.qss后綴的文件來管理Qt中每個類的具體組件的stylesheet設置。 2&#xff09;在類中使用具體.qss文件中的設置。 3&#xff09;解決控件中多個相同組件不同設置或者同一個控制不同子控制或者偽狀態的問題。 1.新建后綴名為.qss的文…

283. 移動零golang

Me 遍歷所有數組&#xff0c;統計0的個數倒著把零寫入數組末尾 func moveZeroes(nums []int) {var count, j intfor _, key : range nums {if key 0 {count} else{nums[j] keyj}}for i:len(nums) - count; i < len(nums); i {nums[i] 0} }最優解(快慢指針) 減少了數組…

QT自定義MainWindow

1.開發環境&#xff1a;Qt 4.7.3 MinGW 32bit (MSVC2015 32bit) 2.實現大綱&#xff1a; 1&#xff09;自定義邊框&#xff0c;標題欄&#xff0c;工具欄&#xff0c;內容欄&#xff0c;狀態欄&#xff08;后面三個代碼中沒有實現實現&#xff09; 2&#xff09;重寫鼠標事件…

485. 最大連續1的個數 golang

Me func findMaxConsecutiveOnes(nums []int) int {max : 0for i,j : 0, -1; i < len(nums); i {if nums[i] 0 {j i} else {if max < i -j {max i - j}}}return max }

QTextEdit實現圖片和文本同行顯示

1.開發環境&#xff1a;Qt 4.7.3 MinGW 32bit (MSVC2015 32bit) 2.實現大綱&#xff1a; 1&#xff09;實現圖片和文本在同一行顯示&#xff0c;且能夠設置字體大小和顏色 2&#xff09;能夠手動設置行的寬度和間距 3&#xff09;設置字體樣式&#xff0c;然后添加圖片&#…

3. 無重復字符的最長子串 golang

官解 func lengthOfLongestSubstring(s string) int {n : len(s)ans : 0subMap : make(map[byte]int)for i, j : 0, 0; j < n; j {if v, ok : subMap[byte(s[j])]; ok {if i < v {i v}}if ans < (j - i 1) {ans j - i 1}subMap[byte(s[j])] j 1}return ans }

QQuickWidget + QML編程實現酷炫動態動畫效果

1.具體需求&#xff1a;當Qt開發項目中需要實現簡單的動態酷炫動畫效果時&#xff0c;我們可以使用Qt中的QQuickWidget來實現&#xff0c;同時還可以使用QML編程來實現具體的動畫效果&#xff0c;具體實現的效果如下所示&#xff1a; 2.具體操作和實現效果圖&#xff1a; 1&am…

Qt中的四種信號與槽的連接方式

1. UI界面右鍵點擊控件&#xff0c;選擇“轉到槽“&#xff0c;系統會在cpp中自動添加這個組件對應的槽函數 2.在Ui界面的下面 siga如l & slot editor欄中手動添加 3.在代碼中使用connect顯示添加 4. 使用on_對象名_事件名隱式連接&#xff0c;以QPushButton為例 QPushBut…

20. 有效的括號 golang 堆棧

借用arraystack的包完成 import "github.com/emirpasic/gods/stacks/arraystack"func isValid(s string) bool {stack : arraystack.New()for _, c : range s {if c ( {stack.Push())} else if c [ {stack.Push(])} else if c { {stack.Push(})} else {if stack.…

215. 數組中的第K個最大元素 golang

Me func findKthLargest(nums []int, k int) int {sort.Ints(nums)return nums[len(nums)-k] }golang實現快排和冒泡排序 1. bubbleSort // method2 func swap(a *int, b *int) {temp : *a*a *b*b temp }func bubbleSort(nums []int) {for i:0; i < len(nums); i {for…