這篇文章主要介紹“C++中怎么使用try和catch捕獲異?!?,在日常操作中,相信很多人在C++中怎么使用try和catch捕獲異常問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++中怎么使用try和catch捕獲異?!钡囊苫笥兴鶐椭?!接下來,請跟著小編一起來學習吧!
??try和catch是最重要的C++關鍵字。要捕獲語句可能引發的異常,可將它們放在try塊中,并使用catch塊對try塊可能引發的異常進行處理:
void somefunc(){ try { int* pNumber=new int; *pNumber=999; delete pNumber; } catch(……) //catches all exceptions { cout<<"Exception in somefunc(),quitting"<<endl; }}
catch(……)捕獲未被其他catch塊顯示捕獲的所有異常。
自定義異常類應繼承std::exception,這讓你能夠重用捕獲std::exception異常的所有catch()塊
? 給變量指定(無論是對您還是其他人來說都)有意義的名稱。值得多花點時間給變量取個好名。? 對于int、float等變量,務必進行初始化。
? 務必將指針初始化為NULL或有效的地址———如運算符new返回的地址。
? 使用數組時,絕不要跨越其邊界??缭綌到M邊界被稱為緩沖區溢出,可導致安全漏洞。
? 不要使用C風格字符串(char*'),也不要使用strelen()和strcopy()等函數。std::string更安全,還提供了很多有用的方法,如獲取長度、進行復制和附加的方法。
? 僅當確定要包含的元素數時才使用靜態數組。如果不確定,應使用std::vector等動態數組。
? 聲明和定義接受非 POD 類型作為輸入的函數時,應考慮將參數聲明為引用,以免調用函數時執行不必要的復制步驟。
? 如果類包含原始指針成員,務必考慮如何在復制或賦值時管理內存資源所有 權,即應考慮編寫復制構造函數和賦值運算符。
? 編寫管理動態數組的實用類時,務必實現移動構造函數和移動賦值運算符,以改善性能。
? 務必正確地使用const。理想情況下,get()函數不應修改類成員,因此應將其聲明為const函數。同樣,除非要修改函數參數包含的值,否則應將其聲明為const引用。
? 不要使用原始指針,而應盡可能使用合適的智能指針。
? 編寫實用類時,務必花精力實現讓它使用起來更容易的運算符。
? 在有選擇余地的情況下,務必使用模板而不是宏。模板不但是通用的,還是類型安全的。
? 編寫類時,如果其對象將存儲在諸如vector和list等容器中,或者被用作映射中的鍵,務必實現運算符<,它將用作默認排序標準。如果您編寫的lambda表達式很長,應考慮轉而使用函數對象,即實現了operator()的類,因為函數對象可重用,且只有一個地方需要維護。
? 絕不要認為運算符new肯定會成功。對于分配資源的代碼,務必處理其可能引發的異常,即將其放在try塊中,并編寫相應的catch()塊。
? 絕不要在析構函數中引發異常。
到此,關于“C++中怎么使用try和catch捕獲異?!钡膶W習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。