如果我們編寫了乙個函式,函式內部可能會出現異常,但是我們不想在這個函式內處理,而是想要通知呼叫者,那麼c++允許它重丟擲這個異常。語法如下:
try catch (exception& e)
語句throw重新丟擲了異常。
看乙個實際的例子:
#include
#include
using namespace std;
int f() catch(exception& e)
}int main()
catch(exception& e)
return 0;
}執行結果:
知識點擴充套件:
程式設計客棧c++重新丟擲異常
有可能單個catch不能完全處理乙個異常,此時在進行了一些處理工作之後,需要將異常重新丟擲,由函式呼叫鏈中更上層的函式來處理。重新丟擲由「throw;」語句實現,throw後不跟表示式或型別。
「throw;」將重新丟擲異常物件,它只能出現在catch或catch呼叫的函式中,如果出現在其它地方,會導致呼叫terminate函式。
被重新丟擲的異常是原來的異常物件,不是catch形參。該異常型別取決程式設計客棧於程式設計客棧異常物件的動態型別,而不是catch形參的靜態型別。比如來自基類型別形參catch的重新丟擲,可能實際丟擲的是乙個派生類物件。
只有當異常說明符是引用時,在catch中對形參的改變,才會傳播到重新丟擲的異常物件中。
catch (my_error & eobj) catch (other_error eobj)
C 異常丟擲機制
乙個程序中可以同時包含多個執行緒。我們通常認為執行緒是作業系統 可識別的最小併發執行和排程單位 不要跟俺說還有 green thread 或者 fiber,os kernel 不認識也不參與這些物件的排程 同一程序中的多個執行緒共享 段 和常量 資料 段 靜態和全域性變數 和擴充套件段 堆儲存 但是...
c 丟擲標準異常
可以在自己的程式中丟擲某些標準異常。丟擲標準異常時,只需生成乙個描述該異常的字串,交給異常物件,它將成為what 返回的描述字串。std strings throw std out of range s throw std out of range out of range somewhere,so...
23 C 丟擲異常型別
1.什麼是錯誤?在設計 編碼甚至測試階段無法呈現,但是在使用者的使用過程中卻可能出現的錯誤。2.如何處理錯誤?1 通過函式的返回值表示成功失敗,以及具體的失敗原因 優點 區域性物件都能得到正確的析構 缺點 層層判斷返回值,冗餘,流程複雜 2 通過遠端跳轉處理錯誤 可以參考我的一篇文章 優點 一步到位...