c++中的異常是指在程式執行時,發生的特殊情況,例如除數為0的情況。異常機制提供了一種轉移程式控制權的方式。
c++中的異常處理涉及到三個關鍵字:try、catch、throw。關於這三個關鍵字的詳細描述如下:
我們可以使用 throw 關鍵字在**中丟擲異常。throw 關鍵字操作物件的型別即為丟擲異常的型別。
示例**如下:
// 定義除法函式,當分母為0時,此函式會丟擲異常資訊
double division(double x, double y)
return (x / y);
}
上述**的函式 division 中 throw 操作的物件是「const char *」型別,所以其丟擲的異常型別即為「const char *」型別。我們想要捕獲到該異常,則需要將 catch 語句對應的異常型別設定為「const char *」。
示例**如下:
try
catch (exceptionname e1)
catch (exceptionname e2)
catch (exceptionname en)
如果 try 塊中的**在不同的情況下會丟擲不同型別的異常,則可使用多個 catch 語句,捕獲並處理這些不同型別的異常。catch 只能捕獲到其規定型別的異常。
上面的示例**會捕獲到型別為 exceptionname 的異常。如果想讓 catch 能夠捕獲 try 塊丟擲的任何型別的異常,則需要在異常宣告的括號內使用省略號「...」,示例**如下:
try
catch (...)
下面展示乙個完整的異常處理的示例**。示例**(exception_demo1.cpp)如下:
#include #include using namespace std;
// 定義除法函式,當分母為0時,此函式會丟擲異常資訊
double division(double x, double y)
return (x / y);
}int main()
catch (const char * exception)
return 0;
}
上述**的division函式丟擲了乙個型別為「const char*」的異常,因此,為了捕獲到該異常,catch 的異常型別必須也是「const char*」。
編譯並執行上述**,結果如下:
丟擲異常的函式後接的 throw(),稱為異常規格說明,表示該函式可以丟擲哪種型別的異常,具體的異常型別在 throw() 的括號中宣告。
具體包括以下幾種情況:
注意:如果函式丟擲異常的型別,與異常規格說明不一致,則會導致程式執行出錯。例如,在上述示例**中,將division函式的異常規格說明設定為「int」型別,則程式執行時會報如下錯誤:
[root@node1 /opt/liitdar/mydemos/******s]# ./exception_demo1
terminate called after throwing an instance of 'char const*'
aborted
[root@node1 /opt/liitdar/mydemos/******s]#
C 中的異常處理
在program.cs中新增如下 之後整個應用程式都不需要額外處理異常了。所以的異常都會在這裡處理 補充 還需要考慮沒有檔案的寫許可權,catch unauthorizedacces ception ex access to the path d chucklu git edenred lisa 5...
c 中的異常處理
異常的概念 程式在執行過程中可能產生異常 異常 exception 與bug的區別 異常是程式執行時可預料的執行分支 bug是程式中的錯誤,是不被預期的執行方式 異常 exception 和bug的對比 異常執行時產生除0的情況 需要開啟的外部檔案不存在 陣列訪問時越界 bug使用野指標 堆陣列使用...
的異常處理 C 異常處理總結
做開發不僅僅要考慮到業務邏輯更要在寫 時將各種可能考慮周全,但是這又是很難的事情,畢竟開發就是個人的事,而使用者可能上萬甚至百萬級別。這時,程式的穩定性就極為重要,我們不能讓程式因為某一處執行出問題而就直接導致程式或者產生其他更嚴重的後果,比如 做除法時當除數為零時,陣列訪問越界時,容器capaci...