Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

errinfo_at_line

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Boost Exception

errinfo_at_line

#include <boost/exception/errinfo_at_line.hpp>[ORIG_END] -->

#include <boost/exception/error_info.hpp>
namespace
boost
    {
    typedef error_info<struct errinfo_at_line_,int> errinfo_at_line;
    }

Этот тип предназначен для использования в качестве стандарта.error_infoэкземпляр для переноса соответствующего номера строки текстового файла, например, в исключениях ошибок разбора, вытекающих из повышения:исключение.

Example:

#include <boost/exception/errinfo_api_function.hpp>
#include <boost/exception/errinfo_at_line.hpp>
#include <boost/exception/errinfo_errno.hpp>
#include <boost/exception/errinfo_file_handle.hpp>
#include <boost/exception/errinfo_file_name.hpp>
#include <boost/exception/errinfo_file_open_mode.hpp>
#include <boost/exception/info.hpp>
#include <boost/throw_exception.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
#include <stdio.h>
#include <errno.h>
#include <exception>
struct error : virtual std::exception, virtual boost::exception { };
struct file_error : virtual error { };
struct file_open_error: virtual file_error { };
struct file_read_error: virtual file_error { };
boost::shared_ptr<FILE>
open_file( char const * file, char const * mode )
    {
    if( FILE * f=fopen(file,mode) )
        return boost::shared_ptr<FILE>(f,fclose);
    else
        BOOST_THROW_EXCEPTION(
            file_open_error() <<
            boost::errinfo_api_function("fopen") <<
            boost::errinfo_errno(errno) <<
            boost::errinfo_file_name(file) <<
            boost::errinfo_file_open_mode(mode) );
    }
size_t
read_file( boost::shared_ptr<FILE> const & f, void * buf, size_t size )
    {
    size_t nr=fread(buf,1,size,f.get());
    if( ferror(f.get()) )
        BOOST_THROW_EXCEPTION(
            file_read_error() <<
            boost::errinfo_api_function("fread") <<
            boost::errinfo_errno(errno) <<
            boost::errinfo_file_handle(f) );
    return nr;
    }

Статья errinfo_at_line раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:19:10/0.0050289630889893/1