error_info_2.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 50 行

CPP
50
字号
//Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.//Distributed under the Boost Software License, Version 1.0. (See accompanying//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//This example shows how to add arbitrary data to active exception objects.#include <boost/exception.hpp>#include <boost/shared_ptr.hpp>#include <stdio.h>#include <errno.h>//typedef boost::error_info<struct tag_errno,int> errno_info;class file_read_error: public boost::exception { };voidfile_read( FILE * f, void * buffer, size_t size )    {    if( size!=fread(buffer,1,size,f) )        throw file_read_error() << errno_info(errno);    }//typedef boost::error_info<struct tag_file_name,std::string> file_name_info;boost::shared_ptr<FILE> file_open( char const * file_name, char const * mode );void file_read( FILE * f, void * buffer, size_t size );voidparse_file( char const * file_name )    {    boost::shared_ptr<FILE> f = file_open(file_name,"rb");    assert(f);    try        {        char buf[1024];        file_read( f.get(), buf, sizeof(buf) );        }    catch(    boost::exception & e )        {        e << file_name_info(file_name);        throw;        }    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?