C 異常重丟擲例項分析

2022-09-28 01:42:13 字數 764 閱讀 1990

如果我們編寫了乙個函式,函式內部可能會出現異常,但是我們不想在這個函式內處理,而是想要通知呼叫者,那麼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 通過遠端跳轉處理錯誤 可以參考我的一篇文章 優點 一步到位...