Les exceptions interrompent l'exécution normale d'un programme, en raison d'une erreur qu'aurait rencontré PHP.

Certaines méthodes des objets du DOM sont susceptibles de lancer une exception suite à une erreur que rencontre PHP dans la tentative d'accomplir l'opération requise. Par exemple, la méthode importNode() de l'objet DOMDocument peut être interrompu durant son exécution par une exception si le noeud ne peut être importé.

Il est possible de capturer une exception avant qu'elle n'interrompt définitivement le programme. Pour cela, il suffit de placer le bloc de codes sensible dans le gestionnaire d'exception try...catch.

try {
  $noeud = $doc->importNode($nouv_noeud);
}
catch(DOMException $e){
  //Gestion de l'exception
  echo $e->getMessage();
}

Les codes d'exception précisent la nature de l'erreur qui se serait produite durant le déroulement du programme.

ConstanteValeurDescription
Méthodes susceptibles de produire l'exception
DOM_INDEX_SIZE_ERR1indique que l'index ou la taille est négatif ou plus grand que la valeur autorisée.
DOMCharacterData->deleteData(),
DOMCharacterData->insertData(),
DOMCharacterData->replaceData(),
DOMCharacterData->substringData()
DOMSTRING_SIZE_ERR2indique que le texte fourni ne tient pas dans le type DOMString.
DOM_HIERARCHY_REQUEST_ERR3indique qu'un noeud est inséré à un endroit non autorisé.
DOMNode->appendChild(),
DOMNode->insertBefore(),
DOMNode->replaceChild()
DOM_WRONG_DOCUMENT_ERR4indique qu'un noeud est utilisé dans un document différent de celui qui l'a créé.
DOMDocument->saveXML(),
DOMImplementation->createDocument(),
DOMNode->appendChild(),
DOMNode->insertBefore(),
DOMNode->replaceChild()
DOM_INVALID_CHARACTER_ERR5indique qu'un caractère invalide ou non autorisé est actuellement utilisé.
DOMDocument->createAttribute(),
DOMDocument->createAttributeNS(),
DOMDocument->createElement(),
DOMDocument->createElementNS(),
DOMDocument->createEntityReference(),
DOMDocument->createProcessingInstruction()
DOM_NO_DATA_ALLOWED_ERR6indique que des données sont employées dans un noeud qui n'en supporte aucunes.
DOM_NO_MODIFICATION_ALLOWED_ERR7indique qu'une tentative de modification a été opérée dans un objet qui n'en supportent aucunes.
DOMElement->removeAttribute(),
DOMElement->removeAttributeNode(),
DOMElement->removeAttributeNS(),
DOMElement->setAttribute(),
DOMElement->setAttributeNode(),
DOMElement->setAttributeNodeNS(),
DOMElement->setAttributeNS(),
DOMNode->appendChild(),
DOMNode->insertBefore(),
DOMNode->removeChild(),
DOMNode->replaceChild()
DOM_NOT_FOUND_ERR8indique qu'une tentative de référencer un noeud a été opérée alors qu'il n'existe pas dans ce contexte.
DOMElement->removeAttributeNode(),
DOMNode->removeChild(),
DOMNode->insertBefore(),
DOMNode->replaceChild()
DOM_NOT_SUPPORTED_ERR9indique que l'implémentation ne supporte pas le type de l'objet ou de l'opération requis.
DOM_INUSE_ATTRIBUTE_ERR10indique qu'une tentative d'ajout d'un attribut a été effectuée alors que cet attribut a déjà été utilisé ailleurs.
DOM_INVALID_STATE_ERR11indique qu'une tentative d'utilisation d'un objet inexistant ou inutilisable a été effectuée.
DOM_SYNTAX_ERR12indique qu'une chaîne de caractères invalide ou illégale a été utilisée.
DOM_INVALID_MODIFICATION_ERR13indique qu'une tentative est de modification du type d'un objet fondamental a été opérée.
DOM_NAMESPACE_ERR14indique qu'une tentative de création ou de modification d'un objet a été opérée alors que ce dernier n'est pas conforme à l'espace de noms en vigueur.
DOMDocument->createAttributeNS(),
DOMDocument->createElementNS(),
DOMElement->setAttributeNS(),
DOMImplementation->createDocument(),
DOMImplementation->createDocumentType()
DOM_INVALID_ACCESS_ERR15indique qu'un paramètre ou une opération n'est pas supportée par l'objet fondamental.
DOM_VALIDATION_ERR16indique qu'une opération d'ajout ou de modification dun noeud risque de rendre le document invalide.