Regardons d'abord un exemple
<input id='b1' type='button' value='按钮'/> <script> window.onload=function(){ var oBtn=document.getElementById("b1"); function mto(){ alert("123"); }; try //非IE { oBtn.attachEvent("onclick",mto,false); } catch(e)//IE { oBtn.addEventListener("click",mto,false); } }; </script>
Remarque :
La différence entre addEventListener et attachEvent est le premier paramètre, le premier est click et le second est onclick
addEventListener s'exécute dans la portée de son élément
attachEvent s'exécute dans la portée globale (this=window)
Essayez...Déclaration Catch
try...catch peut tester les erreurs dans votre code. La section try contient le code qui doit être exécuté, tandis que la section catch contient le code qui s'exécute lorsqu'une erreur se produit.
Syntaxe :
try { //在此运行代码 } catch(err) { //在此处理错误 }
Remarque : utilisez des lettres minuscules pour try...catch. Les majuscules iront mal.
essayez... attrapez... enfin déclaration
Implémentez la gestion des erreurs pour JScript .
try { tryStatements} catch(exception){ catchStatements} finally { finallyStatements}
============== ===========
Paramètres
Option obligatoire. Une déclaration incorrecte peut se produire.
exception
Option obligatoire. n’importe quel nom de variable. La valeur d'initialisation de l'exception est la valeur de l'erreur générée.
catchStatement
Facultatif. Instruction qui gère les erreurs qui se produisent dans le tryStatement associé.
enfinDéclarations
Facultatif. Instruction exécutée sans condition après que tous les autres processus se soient produits.
Description
L'instruction try...catch...finally fournit un moyen de gérer tout ou partie des erreurs qui peuvent survenir dans un bloc de code donné tout en maintenant le code en cours d'exécution. Si une erreur se produit et n'est pas gérée par le programmeur, JScript fournit uniquement son message d'erreur normal à l'utilisateur, comme s'il n'y avait pas de gestion d'erreur.
Le paramètre
Exemple
try { print("Outer try running.."); try { print("Nested try running..."); throw "an error"; } catch(e) { print("Nested catch caught " + e); throw e + " re-thrown"; } finally { print("Nested finally is running..."); } } catch(e) { print("Outer catch caught " + e); } finally { print("Outer finally running"); } // Windows Script Host 作出该修改从而得出 WScript.Echo(s) function print(s){ document.write(s); }
Essayez de courir imbriqué...
Les captures imbriquées capturées ont détecté une erreur
Nested est enfin en cours d'exécution...
La capture externe capturée a détecté une erreur renvoyée
L'extérieur fonctionne enfin
var array = null; try { document.write(array[0]); } catch(err) { document.writeln("Error name: " + err.name + ""); document.writeln("Error message: " + err.message); } finally{ alert("object is null"); }
Processus d'exécution du programme
1. Étant donné que le tableau array n'est pas créé lorsque array[0] est utilisé, array est un objet vide. L'appel de array[0] dans le programme générera une exception null
.
2. L'instruction catch(err) capture cette exception et imprime le type d'erreur via err.name, et err.message imprime les détails de l'erreur
.
3. enfin est similaire à Java, il sera exécuté indépendamment du fait qu'il y ait une exception ou non.
Résumez maintenant les informations correspondant aux six valeursde Error.name :
1. EvalError : L'utilisation de eval() est incompatible avec la définition
2. RangeError : valeur hors limites
3. ReferenceError : valeur de référence illégale ou non reconnue
4. SyntaxError : Une erreur d'analyse de syntaxe s'est produite
5. TypeError : type d'opérande incorrect
6. URIError : utilisation inappropriée de la fonction de traitement de l'URI