[英]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.