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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++别让异常逃离析构函数

發布時間:2024/9/27 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++别让异常逃离析构函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++并不禁止析構函數吐出異常,但是并不鼓勵這樣做

    • 1)原因
    • 2)如何解決

1)原因

如果析構函數吐出異常,程序可能過早結束(比如某個函數調用發生異常,在回溯尋找catch過程中,每離開一個函數,這個函數內的局部對象會被析構,如果此時析構函數又拋出異常,前一個異常還沒得到處理又來一個,因此一般會引起程序過早結束)。異常從析構函數中傳播出去,可能會導致不明確的行為
知乎相關描述

2)如何解決

1.在析構函數中catch異常,然后調用abort終止程序。通過abort搶先置“不明確行為”于死地
2.在析構函數中catch異常,然后記錄該失敗,即吞掉異常(通常是個壞主意,因為這樣壓制了“某些動作失敗”的重要信息。但是也比負擔“草率結束程序”或”不明確行為帶來的風險“好)
3.重新設計接口,讓客戶能夠在析構前主動調用可能引起異常的函數,然后析構函數中使用一個bool變量,根據用戶是否主動調用來決定析構函數中是否應該調用可能引起異常的函數,讓客戶擁有主動權(如果客戶沒有主動調用,那么當發生異常時也不應該抱怨,因為已經給出了客戶自己處理異常的機會)

總結

以上是生活随笔為你收集整理的c++别让异常逃离析构函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。