Dom HTML : Les exceptions

Objet Javascript Les exceptions

Définitions

Les exceptions ou DOMException ne sont pas interprétées de la même façon sous Internet Explorer et Netscape (mozilla, fireFox).
Internet explorer renvoie comme exception des valeurs qui lui sont propres et pas très explicites, alors que Netscape et ces petits frères renvoient comme exceptions des exceptions qui se rapproche du DOMException.
Il existe deux façons d'intercepter les exceptions ou DOMException :
- onerror pour les navigateurs internet Explorer dont la version est < 5 et pour les navigateurs Netscape
dont la version est < 5.1
- try{}catch{} pour les autres navigateurs

Exemple de base

Code

Voici l'exemple javascript de base qui va générer une exception.
Exemple de code :

//Création d'une balise TABLE
var oTable=document.createElement("table");
//Creation d'une ligne
var tr = thead.insertRow(0);
//Assignation de la ligne au tableau
oTable.appendChild(thead);
//Insertion d'une cellule dans la ligne
//Le paramètre -552 est invalide et doit déclancher une exception ou DOMException qui est INDEX_SIZE_ERR
var td = tr.insertCell(-552)

Je ne poccède pas de version entérieure.

Interception sous I.E

onerror

Nous allons intercepter l'exception ou DOMException grâce à l'événement onerror.
Exemple de code :
window.onerror=afficheerreur;
function afficheerreur(msg,url,line){
var erreur="Erreurn";
  erreur+="Erreur : " + msg + "n";
  erreur+="URL : " + url + "n";
  erreur+="Line: " + line + "n";
alert(erreur);
return true;
}

var oTable=document.createElement("table");
var tr = thead.insertRow(0);
oTable.appendChild(thead);
var td = tr.insertCell(-552);

L'erreur renvoyée par ie 5 et 6 est :
Exemple de code :
Erreur
Erreur : Argument non valide.
URL : execetion.html
Line: 75
// le numéro de la ligne est en général faux.

try{} catch{}

Nous allons intercepter l'exception ou DOMException grâce à try{} catch{}.
Exemple de code :
window.onerror=afficheerreur;
function forin(obj){
  var erreur="Erreurn";
  for(i in obj){
    erreur+=i+": " + obj[i] + "n";
  }
  alert(erreur);
}

var oTable=document.createElement("table");
var tr = thead.insertRow(0);
oTable.appendChild(thead);
try{
  var td = tr.insertCell(-552);
}catch (e){
  forin(e);
}

L'erreur renvoyée par ie 5 est :
Exemple de code :
number=-2147024809
description=Argument non valide.

L'erreur renvoyée par ie 6 est :
Exemple de code :
name=Error
number=-2147024809
description=Argument non valide.
message=Argument non valide.

Interception sous Netscape

onerror

Nous allons intercepter l'exception ou DOMException grâce à l'événement onerror.
Exemple de code :
window.onerror=afficheerreur;
function afficheerreur(msg,url,line){
var erreur="Erreurn";
  erreur+="Erreur : " + msg + "n";
  erreur+="URL : " + url + "n";
  erreur+="Line: " + line + "n";
alert(erreur);
return true;
}
var oTable=document.createElement("table");
var tr = thead.insertRow(0);
oTable.appendChild(thead);
var td = tr.insertCell(-552);

L'erreur renvoyée par nescape 4.78 est :
Exemple de code :
Erreur
Erreur : document.getElementById is not a function
URL : execetion.html
Line: 41

L'erreur renvoyée par nescape 7 est :
Exemple de code :
Erreur
Erreur : uncaught exception: [Exception... "Index or size is negative or greater than the allowed amount" code: "1" nsresult: "0x80530001 (NS_ERROR_DOM_INDEX_SIZE_ERR)"
location: "execetion.html Line: 76"]
URL :
Line: 0

L'erreur renvoyée par fireFox est :
Exemple de code :
Erreur
Erreur : uncaught exception: [Exception... "Index or size is negative or greater than the allowed amount" code: "1" nsresult: "0x80530001 (NS_ERROR_DOM_INDEX_SIZE_ERR)" location: "execetion.html Line: 76"]
URL :
Line: 0

try{} catch{}

Nous allons intercepter l'exception ou DOMException grâce à try{} catch{}.
Exemple de code :
window.onerror=afficheerreur;
function forin(obj){
  var erreur="Erreurn";
  for(i in obj){
    erreur+=i+": " + obj[i] + "n";
  }
  alert(erreur);
}

var oTable=document.createElement("table");
var tr = thead.insertRow(0);
oTable.appendChild(thead);
try{
  var td = tr.insertCell(-552);
}catch (e){
  forin(e);
}

L'erreur renvoyée par fireFox est :
Exemple de code :
Erreur
code=1
INDEX_SIZE_ERR=1
DOMSTRING_SIZE_ERR=2
HIERARCHY_REQUEST_ERR=3
WRONG_DOCUMENT_ERR=4
INVALID_CHARACTER_ERR=5
NO_DATA_ALLOWED_ERR=6
NO_MODIFICATION_ALLOWED_ERR=7
NOT_FOUND_ERR=8
NOT_SUPPORTED_ERR=9
INUSE_ATTRIBUTE_ERR=10
INVALID_STATE_ERR=11
SYNTAX_ERR=12
INVALID_MODIFICATION_ERR=13
NAMESPACE_ERR=14
INVALID_ACCESS_ERR=15
message=Index or size is negative or greater than the allowed amount
result=2152923137
name=NS_ERROR_DOM_INDEX_SIZE_ERR
filename=execetion.html
lineNumber=79
columnNumber=4294967295

L'erreur renvoyée par Netscape 6 est :
Exemple de code :
Erreur
Erreur : uncaught exception: [Exception... "Index or size is negative or greater than the allowed amount" code: "1"
nsresult: "0x80530001 (NS_ERROR_DOM_INDEX_SIZE_ERR)" location: "file:execetion.html Line: 76"]
URL :
Line: 0
code=1
INDEX_SIZE_ERR=1
DOMSTRING_SIZE_ERR=2
HIERARCHY_REQUEST_ERR=3
WRONG_DOCUMENT_ERR=4
INVALID_CHARACTER_ERR=5
NO_DATA_ALLOWED_ERR=6
NO_MODIFICATION_ALLOWED_ERR=7
NOT_FOUND_ERR=8
NOT_SUPPORTED_ERR=9
INUSE_ATTRIBUTE_ERR=10
INVALID_STATE_ERR=11
SYNTAX_ERR=12
INVALID_MODIFICATION_ERR=13
NAMESPACE_ERR=14
INVALID_ACCESS_ERR=15
message=Index or size is negative or greater than the allowed amount
result=2152923137
name=NS_ERROR_DOM_INDEX_SIZE_ERR
filename=execetion.html
lineNumber=79
columnNumber=0

Conclusion

Conclusion

Il est très facile d'intercepter l'exception ou DOMException enfin de savoir qu'il y a eu une exception , mais il est presque impossible de savoir quelle DOMException est déclanchée sans avoir l'affichage sous le yeux.
Impossible de faire un test sur INDEX_SIZE_ERR (vrai DOMException).