簡體   English   中英

Boost Exception處理

[英]Boost Exception handling

我正在考慮在我的應用程序中使用boost異常處理。 采用boost異常處理的主要好處是我可以為異常添加元數據。 這可以簡化調試,並允許在異常堆棧展開時向上傳播更多信息。 但是我不清楚這對性能的影響。 如何實現boost異常處理 - error_info對象是否在內部存儲在映射中(每次插入時都插入log(n))! 任何已知的提升異常處理的缺點!

正如你所提到的,據我所見,運算符<<伴隨着以下負載。

  • 用於初始化shared_ptr< error_info > new error_info

  • new exception_detail::error_info_container_impl用於初始化intrusive_ptr< exception_detail::error_info_container>

  • operator[]用於在std::map< typeinfo, shared_ptr<error_info_base const> >插入它們

我不能說這些負載在你的情況下是否重要。 如果您擔心,最好在實際環境中測量負載。

是的,錯誤信息存儲在地圖中。 插入error_info的成本在速度方面都是微不足道的(拋出和堆棧展開可能要慢很多)和空間(所有內存都在catch的末尾回收,通常在堆棧展開后釋放所有其他內存后不久。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM