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

Boost System Library

Boost , ,

boost.png (6897 bytes) System Library
Возвысить дом   Домашняя библиотека   Tutorial  Ссылка
Contents
Introduction
Release History
Design Rationale
History
Acknowledgements
Headers
<boost/system/error_code.hpp>
<boost/system/system_error.hpp>
<boost/system/cygwin_error.hpp>
<boost/system/linux_error.hpp>
<boost/system/windows_error.hpp>

Introduction

Условия ошибок, исходящие из операционной системы или других низкоуровневых интерфейсов прикладной программы (API), обычно сообщаются через целое число, представляющее код ошибки. Когда эти низкоуровневые вызовы API обернуты в портативный код, например, в портативную библиотеку, некоторые пользователи хотят иметь дело с кодами ошибок портативными способами. Другие пользователи должны получить коды ошибок системы, чтобы иметь дело с конкретными потребностями системы. Библиотека Boost System предоставляет простые, легкиеобъекты error_code, которые инкапсулируют системные значения кода ошибки, но также обеспечивают доступ к более абстрактным и портативным условиям ошибки черезerror_conditionобъекты. Поскольку объекты error_code могут представлять ошибки из источников, отличных от операционной системы, включая определяемые пользователем источники, каждый error_code и error_condition имеет соответствующуюerror_category.

Предусмотрен класс исключений, system_error. Полученный из std::runtime_error, он фиксирует основной код ошибки для проблемы, вызывающей исключение, чтобы эта важная информация не была потеряна.

В то время как исключения являются предпочтительным механизмом отчетности об ошибках C++ по умолчанию, пользователям библиотек, зависящим от API низкого уровня, часто требуется перегрузка условий отчетности об ошибках с помощью аргументов кода ошибки и / или значений возврата, а не с помощью исключений. В противном случае, когда ошибки не являются исключительными случаями и должны быть устранены по мере их возникновения, программы становятся заваленными блоками проб/ловли, нечитаемыми и очень неэффективными. Библиотека Boost System поддерживает как отчеты об ошибках по исключениям, так и по коду ошибок.

В дополнение к портативным кодам ошибок и условиям, поддерживаемым заголовком< error_code.hpp>, системные заголовки поддерживают платформы Cygwin, Linux и Windows. Эти заголовки фактически не являются операциями, если они включены для платформ, отличных от их предполагаемой цели.

Библиотека системы Boost является частью стандартной библиотеки C++11. Ряд изменений, особенно в названиях, был внесён комитетом C++ во время стандартизации. Реализация Boost отслеживает эти изменения. См.Устаревшие именадля синонимов, предоставляемых для предотвращения поломки существующего кода пользователя.Внесение измененийдля изменений, которые неизбежно нарушают существующий код пользователя. Все изменения являются шумными и вызывают ошибки компиляции времени.

Release History

<system-2014-06-02>: Первая модульная версия Boost. Незначительные изменения технического обслуживания.

Design Rationale

Класс<error_code>и<error_condition>разработаны как типы значений, поэтому они могут быть скопированы без нарезки и не требуют выделения кучи, но все еще имеют полиморфное поведение, основанное на категории ошибок. Это достигается абстрактным базовым классом<error_category>, обеспечивающим полиморфное поведение, и< error_code>и<error_condition>содержащим указатель на объект типа, полученного из< error_category>.

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

<operator<<>перегрузка<error_code>исключает вводящее в заблуждение преобразование в bool в коде<cout << ec>, где< ec>имеет тип<error_code>. Он также полезен сам по себе.

History

N1975, Предложение библиотеки файловой системы для TR2, принятое для Технического отчета библиотеки 2 (TR2) на Берлинском совещании, включало дополнительные компоненты в дополнение к пункту о диагностике стандартной библиотеки. С тех пор эти компоненты отчетности об ошибках получили более широкое общественное внимание, и в дизайн были внесены улучшения. Усовершенствованная версия была использована N2054, Networking Library Proposal для TR2, демонстрируя, что эти компоненты отчетности об ошибках полезны за пределами исходной библиотеки файловой системы.

Первоначальное предложение рассматривало категории ошибок как бинарный выбор между<errno>(т.е. в стиле POSIX) и исходными кодами ошибок операционной системы. В настоящее время предлагаемые компоненты допускают столько дополнительных категорий ошибок, сколько необходимо для реализации или пользователями. Необходимость поддержки дополнительных категорий ошибок, например, возникает в некоторых реализациях сетевых библиотек, поскольку они построены поверх API POSIX<getaddrinfo>, который использует коды ошибок, не основанные на<errno>.

Acknowledgements

Кристофер Колхофф и Питер Димов внесли важный вклад в дизайн. Комментарии и предложения также были получены от Павла Возенилека, Геннаро Проты, Дэйва Абрахамса, Джеффа Гарланда, Иэна Хэнсона, Оливера Куоке и Олега Абросимова. Кристофер Колхофф предложил несколько улучшений в документе N2066. Комментарии Йохана Нильссона привели к некоторым усовершенствованиям в N2066.


Пересмотрено2 июня 2014June 02, 2014 [ORIG_END] -->

Авторское право Beman Dawes, 1999

Распространяется под лицензией Boost Software License, версия 1.0. (См. файлLICENSE_1_0.txtили www.boost.org/LICENSE_1_0.txt)

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:24:35/0.028829097747803/1