2010-11-17 7 views
0

Lorsque j'essaie ce code en javascript, pourquoi ne pas attraper l'erreur sur la faute d'orthographe sur XMLHttpRequest?try catch in javascript

try { 
    var x= new XMLHdfattpRequest(); 
    } catch (e){ 
    alert(e); 
    } 
+10

dans quel navigateur? –

+0

@steve Il se peut qu'une erreur plus ancienne soit lancée afin que le code ci-dessus ne soit pas exécuté. –

+1

Il se coince dans les tests FF en utilisant FireBug. – wajiw

Répondre

1

J'ai couru ce code dans Firefox, IE, Chrome et ils ont tous pris l'erreur donc je suppose que vous voulez dire attraper l'orthographe miss. La raison pour laquelle il n'a pas été intercepté est que le JavaScript standard n'est pas validé statiquement comme les langages tels que C#. Lorsque le code est exécuté, le nom XMLHdfattpRequest doit être vérifié dans la portée lexicale environnante. S'il n'est pas trouvé, il devient une référence insoluble. Lorsque vous essayez de créer une référence irrécupérable qui se produit lorsqu'une erreur de référence se produit.

+0

@Chaos Je ne pense pas que la spécification mentionne "références irrécupérables". Si le nom «foo» n'est pas trouvé dans la chaîne de portée courante, la valeur 'undefined' est renvoyée. 'foo' est' undefined' et appeler 'foo' (comme dans' foo() ') lancera une erreur. –

+0

@ Šime Vidas - Vous devez creuser un peu plus profond. Lire: ** 10.2.1.2 ** -> ** 11.2.2 ** -> ** 8.7.1 ** – ChaosPandion

+0

@Chaos +1 Vous avez raison. En détail, ces étapes sont prises: ** 11.2.2 ** (Le nouvel opérateur) -> ** 11.1.2 ** (Référence d'identification) -> ** 10.3.1 ** (Résolution d'identifiant) -> ** 10.2.2.1 ** (GetIdentifierReference) Ceci retournera une valeur de type Reference dont la valeur de base est 'undefined'. Maintenant, nous revenons à la deuxième étape dans ** 11.2.2 ** (Le nouvel opérateur) -> ** 8.7.1 ** (GetValue) Ici, une erreur ReferenceError est renvoyée. –

0

Peut-être avez-vous un code d'erreur javascript avant cela?
Il peut casser votre interpréteur de navigateur et ne jamais exécuter vous essayez/attraper le code.

0

J'ai testé ce qui précède dans FF 3.5.9 et IE 8 et ils se comportent comme prévu avec une alerte surgissant. FF avec le plugin Firebug activé affiche également l'alerte. Comme d'autres l'ont dit, essayer de créer un nouveau XMLHdfattpRequest va vous donner un ReferenceError en FF ou un TypeError en IE qui est censé être attrapé par le bloc catch.

Il semble donc que le problème réside dans votre navigateur ou dans votre interpréteur JavaScript. Il peut être osé (je m'excuse d'être si basique dans ma réponse) mais avez-vous vérifié que JavaScript est réellement permis? Après tout, when you have eliminated the impossible, whatever remains, however improbable, must be the truth.