日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ primer第十八章 18.1小结 异常处理

發布時間:2023/12/13 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ primer第十八章 18.1小结 异常处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

18.1 異常處理

  • 異常處理機制,允許程序獨立開發的部分能夠在運行的時候出現的問題進行通信并且做出相應的處理,異常的處理使得我們可以將問題的檢測和處理分離開來。程序的一部分負責檢測問題的出現,然后將解決這個問題的任務傳遞給程序的另一部分。負責檢測的環節無法處理模塊的所有細節,反之亦然。
  • 處理異常,最核心關鍵的問題:拋出異常時發生了什么、捕獲異常時發生了什么、用來傳遞錯誤的對象的意義

18.1.1 拋出異常

  • C++通過拋出一個表達式來引發一個異常。被拋出的表達式的類型和當前的調用鏈決定了針對異常使用哪段代碼來處理。在這個過程中會涉及調用鏈和拋出的異常最近匹配的過程
  • 當執行一個throw的時候,跟在throw后面的語句不會被執行。相反程序的控制權會從throw轉移給與之相互對應的catch模塊,這個catch模塊可能是一個局部的catch,也可能是位于直接或者間接調用發生異常的函數的另外一個函數。
  • 控制權從一處轉移到另外一處的含義:1,沿著調用鏈的函數可能提早退出;2,一旦程序開始執行異常處理代碼,則沿著調用鏈的創建的對象將會被銷毀。
  • throw的用法和return類似,他通常作為條件語句的一部分或者作為某個函數的最后(唯一)一條語句

棧展開

  • 拋出一個異常的時候,程序會暫停當前函數的執行過程,并且立刻尋找和異常相互匹配的catch語句。當throw出現在一個try語句塊中,檢查和該try塊關聯的catch語句。如果有匹配的catch,則使用該catch處理異常。如果沒有匹配的catch,而且try嵌套在其他的try中,則繼續檢查和外層相互匹配的catch語句,如果還是沒有catch語句,則退出當前的函數,在調用前函數的外層函數繼續尋找
  • 上述的過程稱為棧展開,棧展開的過程沿著嵌套函數的調用鏈不斷查找,直到找到一個與異常相互匹配的catch語句為止,如果一直沒有找到,則退出主函數終止查找過程。
  • 發生了異常,但是沒有找到與之相互對應的catch時,程序將會調用terminate函數,終止程序的執行。

參考鏈接

  • http://c.biancheng.net/cpp/biancheng/view/3283.html

總結

以上是生活随笔為你收集整理的C++ primer第十八章 18.1小结 异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。