Déclaration de tolérance aux pannes js, même si des erreurs js se produisent, aucune erreur ne sera demandée (pour éviter un symbole triangulaire jaune dans le coin inférieur droit du navigateur, sinon l'expérience utilisateur sera mauvaise)
Copiez le code comme suit :
window.onerror=function(){return true;}
Ce qui suit est d'obtenir des informations sur les exceptions js pour aider les développeurs à trouver des problèmes
1, essayez... attrapez...
Copiez le code comme suit :
<script type="text/javascript">
var txt=""
fonction message()
{
essayer
{
adddlert("Bienvenue invité!")
}
attraper (erreur)
{
txt="Il y a une erreur sur cette page./n/n"
txt+="Cliquez sur "OK" pour continuer à consulter cette page,/n"
txt+="Cliquez sur "Annuler" pour revenir à la page d'accueil./n/n"
si(!confirm(txt))
{
document.location.href="/index.html"
}
}
}
</script>
2, lancer
Copiez le code comme suit :
<script type="text/javascript">
var x=prompt("Veuillez saisir un nombre entre 0 et 10 :","")
essayer
{
si(x>10)
lancer "Err1"
sinon si(x<0)
lancer "Err2"
sinon si (estNaN (x))
lancer "Err3"
}
attraper(euh)
{
si(er=="Err1")
alert("Erreur ! La valeur est trop grande !")
si(er == "Err2")
alert("Erreur ! La valeur est trop petite !")
si(er == "Err3")
alert("Erreur ! La valeur n'est pas un nombre !")
}
</script>
3, une erreur :
Copiez le code comme suit :
<script type="text/javascript">
onerror=handleErr
var txt=""
fonction handleErr(msg,url,l)
{
txt="Il y a une erreur sur cette page./n/n"
txt+="Erreur :" + msg + "/n"
txt+="URL : " + url + "/n"
txt+="Ligne :" + l + "/n/n"
txt+="Cliquez sur "OK" pour continuer./n/n"
alerte (txt)
retourner vrai
}
fonction message()
{
adddlert("Bienvenue invité!")
}
</script>
Gestion des exceptions en js
Vous pouvez utiliser try...catch en JavaScript pour la gestion des exceptions. Par exemple:
essayez { foo.bar();} catch (e) { alert(e.name + ": " + e.message);}
À l'heure actuelle, les exceptions système que nous pouvons obtenir incluent principalement les 6 types suivants :
EvalError : déclenché lorsqu'une erreur se produit lors de l'exécution du code dans eval()
RangeError : déclenché lorsqu'une variable ou un paramètre numérique est en dehors de sa plage valide
ReferenceError : déclenché lors du déréférencement d'une référence invalide
SyntaxError : déclenché lorsqu'une erreur de syntaxe se produit lors de l'analyse du code dans eval()
TypeError : déclenché lorsqu'une variable ou un paramètre n'est pas un type valide
URIError : déclenché lorsque encodeURI() ou decodeURI() reçoivent des paramètres non valides
Les six objets d'exception ci-dessus héritent tous de l'objet Error. Ils prennent tous en charge les deux méthodes de construction suivantes :
new Error();new Error("Informations sur les exceptions");
La méthode pour lever manuellement une exception est la suivante :
Copiez le code comme suit :
essayer {
throw new Error("Oups!");}
attraper (e) {
alert(e.nom + ": " + e.message);}
Si vous souhaitez déterminer le type d'informations d'exception, vous pouvez le faire dans catch :
Copiez le code comme suit :
essayer {
foo.bar();
} attraper (e) {
if (e instanceof EvalError) {
alert(e.nom + ":" + e.message);
} else if (e instanceof RangeError) {
alert(e.nom + ": " + e.message }
//etc
}
L'erreur a les propriétés principales suivantes :
description : description de l'erreur (disponible uniquement dans IE).
fileName : Le nom du fichier de l'erreur (disponible uniquement dans Mozilla).
lineNumber : Le nombre de lignes en erreur (disponible uniquement dans Mozilla).
message : message d'erreur (identique à la description sous IE)
nom : type d’erreur.
numéro : code d'erreur (disponible uniquement dans IE).
pile : informations sur la pile d'erreurs telles que Stack Trace en Java (disponible uniquement dans Mozilla).
Par conséquent, afin de mieux comprendre le message d’erreur, nous pouvons modifier la partie catch sous la forme suivante :
Copiez le code comme suit :
essayer {
foo.bar();
} attraper(e) {
si (browserType != BROWSER_IE) {
alert("nom : " + e.name + "message : " + e.message + "lineNumber : " + e.lineNumber + "fileName : " + e.fileName + "stack : " + e.stack);
} autre {
alert("nom : " + e.name + "errorNumber : " + (e.number & 0xFFFF) + "message : " + e.message "); } } "
La commande throw en JavaScript peut en fait lancer n'importe quel objet, et nous pouvons recevoir cet objet dans catch. Par exemple:
Copiez le code comme suit :
essayer {
throw new Date(); // Lance l'objet heure actuelle} catch (e) { alert(e.toLocaleString()); // Utilise le format local pour afficher l'heure actuelle.
}