我們平時寫完代碼運行的過程中,會出現一些問題,但是又不想讓程序立馬掛掉,或者有些數據沒有處理程序就終止運行了。
對于不想讓程序直接遇到問題就停止的情況,我們可以用try...catch...捕獲異常,打印出異常后繼續運行。對于有些數據沒有處理程序就掛掉的情況,我們可以用c++的析構函數和java中的finally來進行處理。
- throw: ?當問題出現時,程序會拋出一個異常。這是通過使用? throw ?關鍵字來完成的。
- catch: ?在您想要處理問題的地方,通過異常處理程序捕獲異常。 catch ?關鍵字用于捕獲異常。
C++ 提供了一系列標準的異常,定義在
表是對上面層次結構中出現的每個異常的說明:
代碼示例:
#include
#include
#include
#include
using namespace std;
class Test {
public:
int a;
int b;
Test(int a, int b) {
this->a = a;
this->b = b;
}
double division() {
if (b == 0) {
throw "Division by zero condition!"; //自定義拋出的異常
}
return (a/b);
}
~Test() { //此函數為析構函數,異常發生后,該函數會被執行,相當于java中的finally
cout<<"this func will be exec finally"<
v(10);
try {
v.at(100) = 100; //拋出 out_of_range 異常
}
catch (out_of_range & e) {
cerr << e.what() << endl;
}
string s = "hello";
try {
char c = s.at(100); //拋出 out_of_range 異常
}
catch (out_of_range & e) {
cerr << e.what() << endl;
}
return 0;
}
總結:
- c++的析構函數相當于finally的作用;
- c++的異常捕獲使用并不靈活,需要提前知道會發生哪些異常再進行定義。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
