減去試塊在main

2021-06-25 14:52:45 字數 944 閱讀 6951

現在,你應該有怎樣的例外工作合理的想法。在這節課中,我們將覆蓋更多的一些有趣的例外情況。

未捕獲的異常

在過去的幾個例子,有相當多的情況下,函式假定其呼叫者(或另乙個函式在呼叫堆疊)處理的例外。在下面的例子中,假設有人會mysqrt()處理異常,但如果沒有人把究竟發生了什麼?

這是我們的平方根程式再次,減去試塊在main():

#include "math.h" // for sqrt() function

using namespace std;

// a modular square root function

double mysqrt(double dx)

int main()

現在,讓我們說,使用者輸入的4,和mysqrt(- 4)提出了乙個例外。mysqrt()不處理異常,所以程式堆疊的減少及控制返回到main()。但沒有異常處理程式,在這裡,所以main()終止。在這一點上,我們就終止了我們的應用!

當main()終止與未處理的異常,作業系統會通知你,已發生未處理的異常錯誤。它是如何依賴於作業系統,但可能包括列印乙個錯誤資訊,彈出錯誤對話方塊,或簡單的崩潰。一些作業系統是比別人少優雅。這通常是你想要完全避免!

抓住所有處理程式

現在,我們發現自己在乙個condundrum:函式可以把任何資料型別的例外,如果沒有捕獲到異常,它會傳播到你的程式的頂部,使其終止。因為不知道如何呼叫功能,甚至實現它是可能的,我們如何才能避免這種情況的發生?

幸運的是,c + +為我們提供了乙個機制來捕獲所有異常型別。這是被稱為乙個包羅永珍的處理程式。乙個捕獲所有處理器的工作就像乙個正常的catch塊,除了可以用一種特定型別的捕捉,利用橢圓運算元(……)作為型抓。如果你記得的教訓7.14,橢圓和為什麼要避開他們,橢圓以前用來傳遞任何型別的乙個函式的引數。在這種情況下,他們所代表的任何資料型別的例外。這是乙個簡單的例子:

靜態塊》main 構造塊》構造方法

用static申明,jvm載入類時執行,僅執行一次 構造塊 類中直接用 定義,每一次建立物件時執行 執行順序優先順序 靜態塊 main 構造塊 構造方法 靜態塊按照申明順序執行,所以先執行publicstaticb t1 newb 該語句建立物件,則又會呼叫構造塊,輸出構造塊 接著執行public ...

跑在main之前

最初發表在qq空間 這裡貼圖不方便 全文見跑在main之前 和跑在main之前 2 有圖有真相。通常這是乙個面試題,如何讓一段 跑在main 函式前面。乙個熟練的c 開發者能夠輕易給出答案,即靜態初始化 在c裡面又如何呢,有沒有辦法做到這點?下面講乙個vc裡的方法。int initbeforemai...

在main前後呼叫函式的方法

方法一 使用 attribute巨集 可宣告多個constructor,在main前呼叫多個函式 attribute constructor void before main attribute destructor void after main intmain int argc,char ar ...