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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(八)boost库之异常处理

發布時間:2024/4/11 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (八)boost库之异常处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當你面對上千萬行的項目時,當看到系統輸出了異常信息時,你是否想過,如果它能將文件名、行號等信息輸出,該多好啊,曾經為此絞盡腦汁。

????? 今天使用boost庫,將輕松的解決這個問題。

1、boost異常的基本用法

先看看使用STL中的異常類的一般做法:

// 使用STL定義自己的異常 class MyException : public std::exception { public: MyException(const char * const &msg):exception(msg) { } MyException(const char * const & msg, int errCode):exception(msg, errCode) { } }; void TestException() { try { throw MyException("error"); } catch(std::exception& e) { std::cout << e.what() << std::endl; } }

boost庫的實現方案為:

//使用Boost定義自己的異常 #include <boost/exception/all.hpp> class MyException : virtual public std::exception,virtual public boost::exception { }; //定義錯誤信息類型, typedef boost::error_info<struct tag_err_no, int> err_no; typedef boost::error_info<struct tag_err_str, std::string> err_str; void TestException() { try { throw MyException() << err_no(10) << err_str("error"); } catch(std::exception& e) { std::cout << *boost::get_error_info<err_str>(e) << std::endl; } }

?

boost庫將異常類和錯誤信息分離了,使得錯誤信息可以更加靈活,其中typedef boost::error_info<struct tag_err_no, int> err_no;

定義一個錯誤信息類,tag_err_no無實際意義,僅用于標識,為了讓同一類型可以實例化多個錯誤信息類而存在。

?

2、使用boost::enable_error_info將標準異常類轉換成boost異常類

class MyException : public std::exception{}; #include <boost/exception/all.hpp> typedef boost::error_info<struct tag_err_no, int> err_no; typedef boost::error_info<struct tag_err_str, std::string> err_str; void TestException() { try { throw boost::enable_error_info(MyException()) << err_no(10) << err_str("error"); } catch(std::exception& e) { std::cout << *boost::get_error_info<err_str>(e) << std::endl; } }

有了boost的異常類,在拋出異常時,可以塞更多的信息了,如函數名、文件名、行號。

3、使用BOOST_THROW_EXCEPTION讓標準的異常類,提供更多的信息

// 使用STL定義自己的異常 class MyException : public std::exception { public: MyException(const char * const &msg):exception(msg) { } MyException(const char * const & msg, int errCode):exception(msg, errCode) { } }; #include <boost/exception/all.hpp> void TestException() { try { //讓標準異常支持更多的異常信息 BOOST_THROW_EXCEPTION(MyException("error")); } catch(std::exception& e) { //使用diagnostic_information提取所有信息 std::cout << boost::diagnostic_information(e) << std::endl; } }

?

我們幾乎不用修改以前的異常類,就能讓它提供更多的異常信息。

總結

以上是生活随笔為你收集整理的(八)boost库之异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: xxx在线播放| 欧美乱人伦 | 黄色小视频在线观看免费 | 欧美黑人xxx | 国产精品国产精品国产专区不片 | 久在线 | 国产精品视频一区二区三区不卡 | 妺妺窝人体色www聚色窝仙踪 | 韩国三级在线播放 | 精品国产乱码久久久久夜深人妻 | 亚洲成人伦理 | 日日操夜夜摸 | 看一级黄色 | 国产精品丝袜黑色高跟鞋的设计特点 | 成人四色| 丝袜美腿av | 国内久久精品视频 | 日本一区二区免费高清视频 | 69成人网 | 久久大综合 | 国产999精品久久久久久 | 亚洲天堂2013| 亚洲欧美影院 | www.在线| 日韩免费在线视频观看 | 午夜综合网 | 国产成人三级一区二区在线观看一 | 人人爽夜夜爽 | 亚洲欧美在线视频观看 | 亚洲人 女学生 打屁股 得到 | 奇米精品一区二区三区在线观看一 | 欧美成人精品在线 | a v视频在线观看 | 综合久久五月天 | 亚洲欧美91 | 老牛av一区二区 | 麻豆av剧情 | 日韩三级精品 | 国产精品久久久久久久免费看 | 韩国美女黄色片 | 婷色| 91热久久| 天堂少妇 | 久久九九精品 | 在线资源站| 天天爽天天插 | 国产精品久久久久久久久久久久久久久久 | 岛国片在线免费观看 | 久久久国产精品人人片 | 伊人久久麻豆 | 伊人狠狠操 | 欧美精品色婷婷五月综合 | 日韩一区免费视频 | 欧洲金发美女大战黑人 | 久久作爱视频 | 欧美日韩二区三区 | 91久久极品少妇xxxxⅹ软件 | 天堂在线一区 | 国产精品一区二区在线看 | 深夜福利免费在线观看 | 美女一级片 | 色吧视频 | 黄色高清在线观看 | 日韩一级一区 | 91婷婷| 真实乱偷全部视频 | 成人做爰www看视频软件 | 国产在线高潮 | 精品无码人妻一区二区三区 | 91超薄肉色丝袜交足高跟凉鞋 | 欧美成人秋霞久久aa片 | 亚洲天堂第一 | 久久国产麻豆 | 日日干夜夜骑 | 麻豆激情网 | 国产精品人人做人人爽人人添 | 成人在线视频免费播放 | 欧美亚洲欧美 | 99热精品在线观看 | 国产午夜精品久久久 | 在线欧美一区 | 黄色a一片 | 精品自拍第一页 | 91大神在线免费观看 | 成 人片 黄 色 大 片 | 91在线观 | 国产一区在线看 | 亚洲AV第二区国产精品 | 久久夜夜操妹子 | 亚洲国产二区 | 国产毛片久久久久久国产毛片 | 亚洲精品日韩在线 | 亚洲乱码电影 | 精品国产乱码久久久久久预案 | 黄色网页网站 | 自拍偷拍视频网 | 91超碰在线播放 | 欧美日韩国产二区 | 久久久999视频 |