如何使用try catch throw

2021-05-21 14:06:18 字數 1784 閱讀 6324

以前使用的不多,轉個帖子,從現在開始有所改變吧!

try,catch, throw的含義就很清楚,但怎麼使用,我還是過了好多年才明白一些 

先看乙個不好的例子 

//----------------- 不好的** ----------------- 

class ctest1; 

class ctest2; 

class ctest3; 

void badcode() 

//new ctest2 

ctest2 * ptest2 = new ctest2; 

//do something 

bret = dosomething(); 

if (!bret) 

//new ctest3 

ctest3 * ptest3 = new ctest3; 

//do something 

bret = dosomething(); 

if (!bret) 

//release 

delete ptest1; 

delete ptest2; 

delete ptest3; 

} 下面是我個人比較喜歡的寫法 

//--------- 好的例子 --------------- 

class ctest1; 

class ctest2; 

class ctest3; 

void badcode() 

catch(...)  }

什麼時候使用try,catch,什麼時候不用;什麼時候用throw,什麼時候不用。工作了很多年才明白。 

我個人的理解是: 

1。在private或者protected的成員函式不使用try,catch,而只使用throw 

2。如果在private或者protected的成員函式需要使用try,catch,那麼就要使用rethrow 

3。在public成員函式裡使用try,catch 

4。如果該類相對於整個專案來說是屬於被呼叫層,那麼public成員函式也可以不使用try,catch 

5。如果呼叫第三方的**,我一般都會用try,catch 

我個人的習慣是把private或者protected成員函式的名字使用字首__,public函式不用 

先看乙個我不喜歡的寫法 

//------------- try, catch, throw 例子,不喜歡的寫法 ------------ 

class ctest 

//--------- init ------------ 

int ctest:init() 

catch(int & err)  } 

//---------- __inita ---------- 

int ctest::__inita() 

catch(int & err)  } 

__initb, ___initc和___inita類似

下面是我個人比較喜歡的寫法 

//------------- try, catch, throw 例子,喜歡的寫法 ------------ 

class ctest 

//--------- init ------------ 

int ctest:init() 

catch(int & err)  } 

//---------- __inita ---------- 

int ctest::__inita() 

__initb, ___initc和___inita類似

如何使用 滅火器如何使用

滅火器的種類不同使用方法也不相同,下面單獨針對乾粉滅火器 泡沫滅火器和二氧化碳滅火器使用方法說明。一 乾粉滅火器的使用方法 適用範圍 適用於撲救各種易燃 可燃液體和易燃 可燃氣體火災,以及電器裝置火災。1 右手拖著壓把,左手拖著滅火器底部,輕輕取下滅火器。2 右手提著滅火器到現場。3 除掉鉛封。4 ...

如何使用 如何正確使用定速巡航

現在隨著造車技術的不斷創新和改進,越來越多的高科技功能都應用到了汽車上,不僅提供了實用性,也讓我們享受到了科技的快感。今天我們就聊一聊一項可以實現車輛自動駕駛的功能 定速巡航。定速巡航 cruise control system 簡稱ccs,簡單的理解就是給車子設定乙個速度值,駕駛員只需要掌握方向,...

如何使用CFileDialog

cfiledialog的語法 cfiledialog bool bopenfiledialog,lpctstr lpszdefext null,lpctstr lpszfilename null,dword dwflags ofn hidereadonly ofn overwriteprompt,l...