// // DOMException.h // // Library: XML // Package: DOM // Module: DOM // // Definition of the DOM DOMException class. // // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // SPDX-License-Identifier: BSL-1.0 // #ifndef DOM_DOMException_INCLUDED #define DOM_DOMException_INCLUDED #include "Poco/XML/XML.h" #include "Poco/XML/XMLException.h" namespace Poco { namespace XML { class XML_API DOMException: public XMLException /// DOM operations only raise exceptions in "exceptional" circumstances, i.e., /// when an operation is impossible to perform (either for logical reasons, /// because data is lost, or because the implementation has become unstable). /// In general, DOM methods return specific error values in ordinary processing /// situations, such as out-of-bound errors when using NodeList. /// /// Implementations should raise other exceptions under other circumstances. /// For example, implementations should raise an implementation-dependent exception /// if a null argument is passed when null was not expected. { public: enum { INDEX_SIZE_ERR = 1, /// index or size is negative or greater than allowed value DOMSTRING_SIZE_ERR, /// the specified range of text does not fit into a DOMString (not used) HIERARCHY_REQUEST_ERR, /// a node is inserted somewhere it doesn't belong WRONG_DOCUMENT_ERR, /// a node is used in a different document than the one that created it INVALID_CHARACTER_ERR, /// an invalid character is specified (not used) NO_DATA_ALLOWED_ERR, /// data is specified for a node which does not support data NO_MODIFICATION_ALLOWED_ERR, /// an attempt is made to modify an object where modifications are not allowed NOT_FOUND_ERR, /// an attempt was made to reference a node in a context where it does not exist NOT_SUPPORTED_ERR, /// the implementation does not support the type of object requested INUSE_ATTRIBUTE_ERR, /// an attempt is made to add an attribute that is already in use elsewhere INVALID_STATE_ERR, /// a parameter or an operation is not supported by the underlying object SYNTAX_ERR, /// an invalid or illegal string is specified INVALID_MODIFICATION_ERR, /// an attempt is made to modify the type of the underlying object NAMESPACE_ERR, /// an attempt is made to create or change an object in a way which is incorrect with regard to namespaces INVALID_ACCESS_ERR, /// an attempt is made to use an object that is not, or is no longer, usable _NUMBER_OF_MESSAGES }; DOMException(unsigned short code); /// Creates a DOMException with the given error code. DOMException(const DOMException& exc); /// Creates a DOMException by copying another one. ~DOMException() noexcept; /// Destroys the DOMException. DOMException& operator = (const DOMException& exc); const char* name() const noexcept; /// Returns a static string describing the exception. const char* className() const noexcept; /// Returns the name of the exception class. Poco::Exception* clone() const; /// Creates an exact copy of the exception. void rethrow() const; /// (Re)Throws the exception. unsigned short code() const; /// Returns the DOM exception code. protected: static const std::string& message(unsigned short code); private: DOMException(); unsigned short _code; static const std::string MESSAGES[_NUMBER_OF_MESSAGES]; }; // // inlines // inline unsigned short DOMException::code() const { return _code; } } } // namespace Poco::XML #endif // DOM_DOMException_INCLUDED