📄 archive_exception.hpp
字号:
#ifndef BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP#define BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP// MS compatible compilers support #pragma once#if defined(_MSC_VER) && (_MSC_VER >= 1020)# pragma once#endif/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8// archive/archive_exception.hpp:// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to 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)// See http://www.boost.org for updates, documentation, and revision history.#include <boost/config.hpp>#ifndef BOOST_NO_EXCEPTIONS#include <exception>#include <cassert>namespace boost {namespace archive {//////////////////////////////////////////////////////////////////////// exceptions thrown by archives//class archive_exception : public virtual std::exception{public: typedef enum { no_exception, // initialized without code other_exception, // any excepton not listed below unregistered_class, // attempt to serialize a pointer of an // an unregistered class invalid_signature, // first line of archive does not contain // expected string unsupported_version,// archive created with library version // subsequent to this one pointer_conflict, // an attempt has been made to directly // serialization::detail an object // after having already serialzed the same // object through a pointer. Were this permited, // it the archive load would result in the // creation of an extra copy of the obect. incompatible_native_format, // attempt to read native binary format // on incompatible platform array_size_too_short,// array being loaded doesn't fit in array allocated stream_error, // i/o error on stream invalid_class_name, // class name greater than the maximum permitted. // most likely a corrupted archive or an attempt // to insert virus via buffer overrun method. unregistered_cast // base - derived relationship not registered with // void_cast_register } exception_code; exception_code code; archive_exception(exception_code c) : code(c) {} virtual const char *what( ) const throw( ) { const char *msg = "programming error"; switch(code){ case no_exception: msg = "uninitialized exception"; break; case unregistered_class: msg = "unregistered class"; break; case invalid_signature: msg = "invalid signature"; break; case unsupported_version: msg = "unsupported version"; break; case pointer_conflict: msg = "pointer conflict"; break; case incompatible_native_format: msg = "incompatible native format"; break; case array_size_too_short: msg = "array size too short"; break; case stream_error: msg = "stream error"; break; case invalid_class_name: msg = "class name too long"; break; case unregistered_cast: msg = "unregistered void cast"; break; case other_exception: // if get here - it indicates a derived exception // was sliced by passing by value in catch msg = "unknown derived exception"; break; default: assert(false); break; } return msg; }protected: archive_exception() : code(no_exception) {}};}// namespace archive}// namespace boost#endif //BOOST_NO_EXCEPTIONS#endif //BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -