我的申請中有自己的例外。當我像這樣拋出它的那一刻:
throw new CChristianLifeMinistryEntryException(strError);
可以理解,代碼分析觸發了這一點,因為我使用了new.
這表明我使用make_unique并且我正在嘗試確定這是否是更新此代碼的正確方法。
uj5u.com熱心網友回復:
在 C 中,例外通常源自std::exception值并按值拋出,并按參考捕獲。這樣你就不需要管理生命周期(處理后不需要洗掉一些例外而不洗掉其他例外)。
喜歡throw std::runtime_error(str_error);。
MFC 的拋出參考的方法new早于 C 編譯器例外支持,因此有一種方法可以拋出指標例外,但不是任意型別的例外。不推薦用于新代碼。
有一個特殊的例外智能指標稱為exception_ptr,通常需要在執行緒之間傳輸例外,而不是包裝拋出的例外。
如果你用 包裹一個例外unique_ptr,你將不得不捕獲它包裹的,這catch不會捕獲派生的例外,因為不同unique_ptr并且不是從彼此派生的,所以以這種方式包裝例外絕對不是一個好主意。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/339640.html
上一篇:Java嘗試捕捉例外
下一篇:AppBar中的搜索功能導致例外
