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).
The following table lists the members exposed by the DOMException object.
An integer indicating the type of error generated.
An exception message.
If index or size is negative, or greater than the allowed value.
If the specified range of text does not fit into a DOMString.
If any Node is inserted somewhere it doesn't belong.
If a Node is used in a different document than the one that created it (that doesn't support it).
If an invalid or illegal character is specified, such as in an XML name.
If data is specified for a Node which does not support data.
If an attempt is made to modify an object where modifications are not allowed.
If an attempt is made to reference a Node in a context where it does not exist.
If the implementation does not support the requested type of object or operation.
If an attempt is made to add an attribute that is already in use elsewhere.
If an attempt is made to use an object that is not, or is no longer, usable.
If an invalid or illegal string is specified.
If an attempt is made to modify the type of the underlying object.
If an attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
If a parameter or an operation is not supported by the underlying object.
If a call to a method such as insertBefore or removeChild would make the Node invalid with respect to "partial validity", this exception would be raised and the operation would not be done. This code is used in [DOM Level 3 Validation].
If the type of an object is incompatible with the expected type of the parameter associated to the object.