Dom CORE : Les Exceptions

Objet Javascript Les Exceptions

Définitions

L'objet Exception renvoyé lors d'une exception peut varier dans ses attributs suivant le navigateur par exemple :
Firefox :
Exemple de code :
code:1
message:Index or size is negative or greater than the allowed amount
result:2152923137
name:IndexSizeError
filename:http://www.zonehtmlv6.loc:81/Sanstitre-1.html
lineNumber:159
columnNumber:0

Internet Explorer :
Exemple de code :
code:1
message:IndexSizeError
name:IndexSizeError
toString: function toString() { [native code] }

Chrome :
Exemple de code :
message:Index or size was negative, or greater than the allowed value.
name:IndexSizeError
code:1
stack:Error: Index or size was negative, or greater than the allowed value .[...]

Safari :
Exemple de code :
line:155
sourceId:2127650896
sourceURL: [...]
code:1
message:INDEX_SIZE_ERR: DOM Exception 1
name:INDEX_SIZE_ERR

Pour connaitre le type de l'erreur seul l'attribut code de l'objet Exception est une valeur sûre.

Pour intercepter les exceptions ou DOMException vous devez utiliser :
- try{}catch(oException){}.

Vous trouverez plus d'informations dans "Les exceptions" du glossaire Modèle Objet de Documents HTML.

Pour les très anciens navigateurs

Informations

Les gestions d'Exceptions ont évoluées avec les nouveaux navigateurs. L'interception des exceptions avec onerror est obsolète.
Cependant je tiens a garder les exemples ainsi que les remarques que j'avais écrites à l'époque.
J'ai donc tout rassemblé sur cette page en dessous de ce paragraphe.

Les Exceptions

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(oException){} pour les autres navigateurs.

Interception sous I.E =< 6

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).