boost:exception使用实例

 1 /************************************************************************/
 2 /*功能描述: boost exception使用实例                                    */
 3 /*作者    : kernel_main                                                */
 4 /*创建时间: 2014.6.8                                                   */
 5 /************************************************************************/
 6 #include <iostream>
 7 #include <exception>
 8 
 9 #include <boost/exception/all.hpp>
10 
11 struct my_exception :         /* 自定义异常类 */
12     virtual std::exception,   /* 虚继承,struct默认public继承 */
13     virtual boost::exception  /* 虚继承,struct默认public继承 */
14 {
15     /* 空实现,不需要实现代码 */
16 };
17 
18 /* 异常信息的类型 */
19 typedef boost::error_info<struct tag_err_no, int> err_no;
20 typedef boost::error_info<struct tag_err_str,std::string> err_str;
21 
22 int main()
23 {
24     using namespace boost;
25     try
26     {
27         try
28         {
29             /* 抛出异常,存储错误码 */
30             throw my_exception() << err_no(10);
31         }
32         catch (my_exception& e) /* 捕获异常,使用引用形式 */
33         {
34             std::cout << *get_error_info<err_no>(e) << std::endl;
35             std::cout << e.what() << std::endl;
36             e << err_str("other info"); /* 向异常追加信息 */
37             throw; /* 再次抛出异常 */
38         }
39     }
40     catch (my_exception& e)
41     {
42         std::cout << *get_error_info<err_str>(e) << std::endl;
43         std::cout << e.what() << std::endl;
44     }
45     return 0;
46 }
原文地址:https://www.cnblogs.com/kernel0815/p/3776656.html