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 }

boost:exception使用实例

时间: 2024-10-10 20:17:30

boost:exception使用实例的相关文章

boost exception

boost exception provides a new exception type, that lets you add data to an exception after it has been thrown. #include <boost/exception/all.hpp> #include <exception> #include <new> #include <string> #include <algorithm> #in

boost::asio 使用实例

1 #include <iostream> 2 #include <boost/asio.hpp> 3 4 using namespace std; 5 using namespace boost::asio; 6 7 int main() 8 { 9 try 10 { 11 cout << "server start." << endl; 12 io_service ios; 13 14 ip::tcp::acceptor acc(io

Boost::regex练习实例

#include <algorithm> #include <vector> #include <string> #include <iostream> #include <cassert> #include <boost/regex.hpp> using namespace std; using namespace boost; //写一个程序,提取<p></p>之间的内容 int main() { // r

Boost 1.61.0 Library Documentation

http://www.boost.org/doc/libs/1_61_0/ Boost 1.61.0 Library Documentation Accumulators Framework for incremental calculation, and collection of statistical accumulators. Author(s): Eric Niebler First Release: 1.36.0 Standard: Categories: Math and nume

内存管理Boost::singleton_pool

singleton_pool与pool的接口完全一致,可以分配简单数据类型(POD)的内存指针,但它是一个单件,并提供线程安全. 由于目前Boost还未提供标准的单件库,singleton_pool在其内部实现了一个较简单.泛型的单件类,保证在main()函数运行之前就创建单件(详情可参考4.6.1小节,117页). singleton_pool位于名字空间boost,为了使用singleton_pool组件,需要包含头文件<boost/pool/singleton_pool.hpp>,即:

Boost::thread库的使用

阅读对象 本文假设读者有几下Skills [1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念. [2]熟悉C++开发,在开发工具中,能够编译.设置boost::thread库. 环境 [1]Visual Studio 2005/2008 with SP1 [2]boost1.39/1.40 概要 通过实例介绍boost thread的使用方式,本文主要由线程启动.Interruption机制.线程同步.等待线程退出.Thread Group几个部份组成. 正文 线程启动 线

boost::thread编程-线程中断(转)

原文转自 http://blog.csdn.net/anda0109/article/details/41943691 thread的成员函数interrupt()允许正在执行的线程被中断,被中断的线程会抛出一个thread_interrupted异常,它是一个空类,不是std::exception或boost::exception的子类 #include "stdafx.h" #include <windows.h> #include <iostream> #

boost数据结构any(很有用!)

any是一种特殊的容器,它只能容纳一个元素,但这个元素可以是任意类型;    可以用any保存任何类型,在任何需要的时候取出它;    这种功能和shared_ptr<void>类似,但是any是类型安全的;    any不是一个模板类,但是其有模板构造函数,从而实现任意类型;    空的any构造函数创建一个空的any对象,不持有任何值;    成员函数empty()可判断any是否为空;    成员函数swap(...)可交换两个any的值;    如果any持有一个对象,函数type()

(八)boost库之异常处理

(八)boost库之异常处理 当你面对上千万行的项目时,当看到系统输出了异常信息时,你是否想过,如果它能将文件名.行号等信息输出,该多好啊,曾经为此绞尽脑汁. 今天使用boost库,将轻松的解决这个问题. 1.boost异常的基本用法 先看看使用STL中的异常类的一般做法: // 使用STL定义自己的异常 class MyException : public std::exception { public: MyException(const char * const &msg):excepti