捕獲指定的型別
這樣的話可以對每種異常做出不同的處理,例如:
#include
using
namespace
std;
void
a(int n)
intmain
()catch(int i)catch(float i)catch(double i)
} return
0;}
捕獲泛型
如果想捕獲全部型別異常的話,c++ 提供了一種簡便的做法,在 catch 子句的異常宣告中使用省略號來作為異常宣告,例如:
void
function()catch(...)
}
捕獲類
例如:
#include
using
namespace
std;
class base
};voida()
intmain
()catch(base &e)
return
0;}
也可以捕獲 base 的子類,並且在 base 類的成員函式前加 virtual 實現多型,這樣的話就可以呼叫子類的 name 方法,例如:
#include
using
namespace
std;
class base
};class derived : public base
};voida()
intmain
()catch(base &e)
return
0;}
捕獲未期望的異常
可以在函式名後用 throw 來宣告該函式可能丟擲的異常,例如:
#include
using
namespace
std;
voida()
throw
(int, float)
intmain
()catch(...)
return
0;}
但是,如果函式丟擲的異常型別未在宣告範圍內的話,程式就會發生崩潰:
執行結果:
terminate called after throwing an instance of
'double'
aborted (core dumped)
但我們可以使用 set_unexpected (unexpected_handler func) 這個函式來修改預設的處理方法,來實現自己的處理方式。
未實現捕獲的異常
假如函式丟擲乙個 double 的異常,但在我們捕獲的函式中沒有實現 double 型別的捕獲,當然也沒有使用 catch(...),這種情況和未期望的異常差不多,它也會上報系統,呼叫系統預設的處理函式。同樣我們也可以更改這個預設函式,使用如下方法:
terminate_handler set_terminate (terminate_handler func)
示例程式:
#include
void
exception
()int
main
()
執行結果:
my_terminate
aborted (core dumped)
你的支援就是我的動力!
h5房卡棋牌平台怎麼搭建
首先,要做一款遊戲,如果你要做一款有網路的遊戲,有使用者資料儲存的,那麼首先就要有乙個伺服器,然後我們才能基於unity開發的這個客戶端去跟伺服器通訊,如果是做單機,那麼就請忽略這第一步 我們使用unity跟伺服器通訊這個機制,叫做網路通訊,一款遊戲剛開始時,會定好準備使用的是什麼網路協議,基於什麼...
滲透H5棋牌遊戲 棋牌遊戲開發
0x01 前言 本來不想發的,涉及太多利益了,這些棋牌遊戲的原始碼最高能賣到幾萬。開發起來不比乙個商場程序難。最近又太忙了,沒時間去做程式碼審計的文章了,但一不小心又搶了個運氣王。0x02 開始 一天做這行的朋友來找我,說幫審計下一套程序,正好這邊的缺一篇文章就順便去看看了。開始看了下目錄,找了幾個...
h5棋牌專案 15 C 與C 通訊
參考資料 c 與c 通訊 c 和c 的socket通訊 c 與c 的通訊 問題點數 30分 windows下c 程式與c 程式間通訊 c include include include using namespace std int main 開啟管道檔案以便讀寫,實際上連線到命名管道伺服器程式 h...