1.異常發生時,異常物件會沿函式呼叫棧的反方向丟擲,這個過程常稱為棧展開。
2.在棧展開過程中,如果異常物件始終都沒遇到可行的catch處理塊,系統將呼叫terminate函式強制終止程式。當然如果連try塊都沒有,系統將直接呼叫terminate函式。
3.在棧展開過程中,編譯器保證適當的撤銷區域性物件。每個函式在棧展開退出時,它的區域性儲存會釋放,如果區域性物件是類型別,則自動呼叫物件的析構函式。
4.析構函式應該從不丟擲異常,因為析構函式都是自動呼叫的,不會自動加上try測試塊,因此析構函式中異常的丟擲將直接導致系統呼叫terminate強制退出。在實踐中,由於析構函式釋放資源,不太可能出現異常,此外標準庫型別都保證它們的析構函式不會引發異常。
5.如果在建構函式中發生異常,則該物件可能只是部分被構造,即使物件只是部分被構造,也要保證將會適當的撤銷已構造的成員。
6.不能不處理異常,異常是足夠重要的,使程式不能按正常情況執行的正常事件。不去捕獲異常將直接導致程式的強制終止。
7.catch子句接收的異常型別可以是內建型別,也可以是類型別,也就是說我們可以丟擲(throw)乙個如int的一般型別作為異常物件。
8.如果catch子句只需了解異常的型別,則可以省去形參名,像這樣:catch(runtime_error) 來捕獲所有的異常,catch(...){}經常與重新丟擲表示式結合使用,catch(...)完成可做的所有區域性工作,然後重新丟擲異常。
20.建構函式包括初始化列表的異常處理:
這裡的函式測試塊將初始化列表和函式體中的**都納入try塊中。
async await 處理非同步知多少
先說一下async的用法,它作為乙個關鍵字放到函式前面,async function timeout 只有乙個作用,它的呼叫會返回乙個promise 物件。呼叫一下看看就知道了,怎麼呼叫?async 函式也是函式,所以它的呼叫和普通函式的呼叫沒有什麼區別,直接加括號呼叫就可以了,為了看結果,cons...
C 版本知多少
以前一直沒搞懂c 到底有些什麼版。到底咋回事,一位研究生同事還問過我c 和visual c 有什麼關係?坑嗲了吧?他都做c 開發的人都不曉得。這裡來解釋一下 microsoft visual c 6 非託管的開發工具 microsfot visual c net 基本.net的託管開發工具 borl...
qt 程式異常結束。 QT間期異常知多少?
qt間期的測量從q波起始至t波 非u波 結束,包括qrs波時限 st段長度 t波寬度。由於qrs波時限代表心室除極時間,t波寬度代表心室快速復極時間,因此qt間期是對心室電活動總時間的測量。qt間期異常,提示哪些問題?正常的qt間期 正常qt間期範圍是0.35 0.43s,或者是0.39s 0.04...