的異常處理 C 異常處理總結

2021-10-16 09:45:34 字數 1549 閱讀 8883

做開發不僅僅要考慮到業務邏輯更要在寫**時將各種可能考慮周全,但是這又是很難的事情,畢竟開發就是個人的事,而使用者可能上萬甚至百萬級別。這時,程式的穩定性就極為重要,我們不能讓程式因為某一處執行出問題而就直接導致程式或者產生其他更嚴重的後果,比如:做除法時當除數為零時,陣列訪問越界時,容器capacity不足而繼續儲存時等等,這些異常情況,如果不能發現並加以處理,很可能會導致程式崩潰。

執行時錯誤如果放任不管,系統就會執行預設的操作,終止程式執行,也就是我們常說的程式崩潰(crash),如果我們能知道程式大概在什麼地方出錯,出錯是什麼型別的,那麼開發者就能根據對應的錯誤型別做出相應的處理。下面通過乙個簡單的例子對比一下:

#include "stdafx.h"#include #include using namespace std ;int _tmain(int argc, _tchar* ar**)catch(exception e)catch{}**塊出現在方法體中,那麼當方法存在多級呼叫時異常是怎麼捕獲的呢?我們通過幾段**來看一下:首先這裡申明並實現了兩個方法funca()和funcb();異常是在funca()中丟擲的,我們在funcb()中用了try{}catch{}塊去捕獲它。void funca()void funcb()catch(char* e)catch(...)

此時如果在mian函式中直接呼叫funcb,毫無疑問程式會crash掉,所以我們在呼叫funcb時加上try{}catch{}

trycatch(char* e)塊捕獲。如圖:

假如,我們在捕獲到異常後並不確定異常的型別,此時我們可能需要分開不同的型別來進行不同的處理,此時我們需要寫多個catch塊,此時我們就需要知道存在多個catch塊時,異常的匹配順序:

class a{};class b:public a{};void func()int _tmain(int argc, _tchar* ar**)catch(char* e)else}

捕獲:

trycatch(zero z)
以上是最簡單的例子,通過這個例子大家能弄明白異常從丟擲檢測最後再到捕獲的整個過程,大家在日常的開發中根據最簡單的例子去豐富自己的業務**就可以了。謝謝大家!!手key不易,點個關注再走唄~~~~

C 異常處理總結

程式構造的過程中,要有程式最終的標準 可靠性 可用性是我比較關注的兩個方面。其中可靠性又分為異常處理和資料完整性兩個方面。異常處理,老生常談,我認為它是乙個開發人員整體邏輯思維,開發模式,個人性情的體現。程式是邏輯的集合,達到正常功能性的開發只能是初級的目標。完善的異常處理才是綜合能力的體現。綜上,...

處理異常總結

總結一下在ray上看到的關於異常的幫助 有兩種崩潰 一種是sigabrt exc crash 一種是exc bad access sigbus or sigsegv sigabrt exc bad access是一種更難除錯的異常,因為它通常是記憶體管理問題 1.注意 錯誤 this class i...

異常處理總結

總的來說異常分為兩種 一 cheked exception 檢查異常 此異常在編譯時候就會檢測出來,我們必須進行捕獲處理。二 unchecked exception 非檢查異常 此異常是在執行期才會丟擲。例如我們常見的nullpointerexception indexoutofbound cept...