日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【C++基础】重抛异常与异常的使用场景

發(fā)布時間:2023/12/1 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C++基础】重抛异常与异常的使用场景 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

重拋異常

異常處理程序可以重新拋出異常。
當(dāng)它無法處理該異常,或想通知它的調(diào)用者發(fā)生了一個異常,此時就需要重拋異常:
1、拋出捕獲的異常

try {// statements; } catch (TheException &ex) {// Do something;throw; }

2、重新拋出另一個不同于已經(jīng)捕獲異常:

class MyException: public logic_error { };try {throw logic_error(); // 拋出派生異常對象 } catch (logic_error& e) { // catch參數(shù)為基類異常,但可以捕獲所有派生類異常對象//MyException* p = dynamic_cast<MyException*>(&e); // 轉(zhuǎn)指針失敗不會再拋異常MyException& p = dynamic_cast< MyException&>(e); // 引用轉(zhuǎn)換失敗會拋 std::bad_cast異常cout << p.what() << endl; // 上面拋異常,本語句被跳過 }

異常的使用場景

1、當(dāng)一個外部的問題阻止你的程序運行時,拋異常:
如:(第三條的笑話真冷。。。)

(1) 從服務(wù)器接收到非法數(shù)據(jù)(2) 磁盤滿了(3) 宇宙射線阻止你查詢數(shù)據(jù)庫

2、如果函數(shù)無法完成它所告知的功能并建立其正常的后置狀態(tài),拋異常
構(gòu)造函數(shù)失敗。例如vector的構(gòu)造函數(shù)應(yīng)創(chuàng)建一個對象,但對象占內(nèi)存太大導(dǎo)致無法構(gòu)建,那么應(yīng)該拋異常

何時不使用異常

1、只發(fā)生在單獨函數(shù)中的簡單錯誤不要用異常處理
2、不要用異常處理編碼錯誤,可以用assert()中斷程序執(zhí)行然后調(diào)試
3、不要用異常來控制程序流程,不要用throw來結(jié)束循環(huán)
4、實時系統(tǒng)中不用異常(航天飛機控制程序、生命維持系統(tǒng)等)

總結(jié)

以上是生活随笔為你收集整理的【C++基础】重抛异常与异常的使用场景的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。