zoukankan      html  css  js  c++  java
  • 使用BOOST异常

    // BoostEx.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    
    #include <boost/exception/all.hpp>
    #include <boost/exception/get_error_info.hpp>
    #include <boost/current_function.hpp>
    #include <string>
    #include <iostream>
    using namespace std;
    using namespace boost;
    
    struct my_execption :
    	virtual std::exception,
    	virtual boost::exception
    {
    };
    
    typedef boost::error_info<struct tag_err_no, int> err_no;
    typedef boost::error_info<struct tag_err_str, wstring> err_str;
    
    
    #define MY_THROW(exepction_str) throw my_execption()<<err_str(exepction_str)\
    									  <<errinfo_api_function(__FILE__)\
    									  <<errinfo_errno(__LINE__);
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	wcout.imbue(locale("chs"));
    
    	//cout<<BOOST_CURRENT_FUNCTION<<endl;
    
    	try
    	{
    		MY_THROW(_T("异常!"))
    	}
    	catch(boost::exception& e)
    	{
    		wcout<<_T("异常:")<<*get_error_info<err_str>(e)<<endl;
    		cout<<"文件:"<<*get_error_info<errinfo_api_function>(e)<<endl;
    		cout<<"行号:"<<*get_error_info<errinfo_errno>(e)<<endl;
    	}
    
    	return 0;
    }
    
    
  • 相关阅读:
    教你如何剖析源码
    Java 简介
    java 入门-helloWorld
    linux yum 命令
    Linux vi/vim
    Linux 磁盘管理
    Linux 用户和用户组管理
    Linux 文件与目录管理
    Linux 文件基本属性
    Linux安装Mysql
  • 原文地址:https://www.cnblogs.com/lilun/p/2003979.html
Copyright © 2011-2022 走看看