異常的概念
程式在執行過程中可能產生異常
異常(exception)與bug的區別
異常是程式執行時可預料的執行分支
bug是程式中的錯誤,是不被預期的執行方式
異常(exception)和bug的對比
異常執行時產生除0的情況
需要開啟的外部檔案不存在
陣列訪問時越界
bug使用野指標
堆陣列使用後未釋放
選擇排序無法處理長度為0的陣列
c++內建了異常處理的語法元素try...catch...
try語句處理正常**邏輯
catch語句處理異常情況
try語句中的異常由對應的catch語句處理
c++通過throw語句丟擲異常資訊
c++異常處理分析
throw丟擲的異常必須被catch處理
當前函式能夠處理異常,程式繼續往下執行
當前函式無法處理異常,則函式停止執行,並返回
未被處理的異常會順著函式呼叫棧向上傳播,直到被處理為止,否則程式將停止執行。
同乙個try語句可以跟上多個catch語句
catch語句可以定義具體處理的異常型別
不同型別的異常由不同的catch語句負責處理
try語句中可以丟擲任何型別的異常
catch(...)用於處理所有型別的異常
任何異常都只能**獲(catch)一次
異常處理的匹配規則
異常丟擲後,至上而下嚴格匹配每乙個catch語句處理的型別
異常處理匹配時,不進行任何的型別轉換
catch語句塊中可以丟擲異常
catch中丟擲的異常需要外層的try...catch...捕獲
異常的型別可以是自定義類型別
對於類型別異常的匹配依舊是至上而下嚴格匹配
賦值相容性原則在異常匹配中依然適用
一般而言
匹配子類異常的catch放在上部
匹配父類異常的catch放在下部
在工程中會定義一系列的異常類
每個類代表工程中可能出現的一種異常型別
**復用時可能需要重解釋不同的異常類
在定義catch語句塊時推薦使用引用作為引數
c++標準庫中提供了實用異常類族
標準庫中的異常都是從exception類派生的
exception類有兩個主要的分支
logic_error
常用於程式中的可避免邏輯錯誤
runtime_error
常用於程式中無法避免的惡性錯誤
小結catch語句塊中可以丟擲異常
異常的型別可以是自定義類型別
賦值相容性原則在異常匹配中依然適用
標準庫中的異常都是從exception類派生的
C 中的異常處理
在program.cs中新增如下 之後整個應用程式都不需要額外處理異常了。所以的異常都會在這裡處理 補充 還需要考慮沒有檔案的寫許可權,catch unauthorizedacces ception ex access to the path d chucklu git edenred lisa 5...
C 中的異常處理介紹
c 中的異常是指在程式執行時,發生的特殊情況,例如除數為0的情況。異常機制提供了一種轉移程式控制權的方式。c 中的異常處理涉及到三個關鍵字 try catch throw。關於這三個關鍵字的詳細描述如下 我們可以使用 throw 關鍵字在 中丟擲異常。throw 關鍵字操作物件的型別即為丟擲異常的型...
的異常處理 C 異常處理總結
做開發不僅僅要考慮到業務邏輯更要在寫 時將各種可能考慮周全,但是這又是很難的事情,畢竟開發就是個人的事,而使用者可能上萬甚至百萬級別。這時,程式的穩定性就極為重要,我們不能讓程式因為某一處執行出問題而就直接導致程式或者產生其他更嚴重的後果,比如 做除法時當除數為零時,陣列訪問越界時,容器capaci...