2011-12-16 4 views
0

Donc, dans mon application quand une condition particulière se produit, je veux afficher une alerte, puis arrêter l'exécution du programme. J'ai lu quelque part que cela peut être fait avec un throw() mais je suis incapable de faire ce travail.Arrêt du fonctionnement du programme JavaScript en cas d'erreur?

Voici ce que j'ai essayé:

function check_for_error(data) { 
    try { 
     if (<error condition>) { 
      throw "error"; 
     } 
    } catch(e) { 
      alert('error occured'); 
       // I want program execution to halt here but it does not, 
       // it continues within the calling code 
    } 
} 
+0

Vous pouvez essayer de lancer une erreur à partir du bloc catch, puis de le traiter dans la méthode de l'appelé. Et essentiellement sortie. – Sid

Répondre

1

Vous devez re-jeter l'exception:

... 
catch(e) { 
    alert('error occurred'); 
    throw(e); 
} 
+0

Merci, mais cela me donne une erreur "exception non interceptée". – bethesdaboys

+0

Ok, je l'ai eu à travailler en faisant ce qui précède, puis dans la fonction d'appel mettant l'appel dans un try/catch, avec la capture vide. Merci. – bethesdaboys

2

Vous devriez jeter une autre erreur dans le bloc catch. Ou ne pas attraper l'erreur initiale du tout.

Actuellement, les événements suivants se produit:

<error condition me> 
throw "error" 
catch error and Show alert 

Pour "arrêter" l'exécution, vous devez ajouter throw e après l'alerte (dans le bloc catch):

catch(e) { 
    alert('error occurred'); 
    throw e; 
} 

Si votre fonction est Appelé depuis un autre bloc try-catch, vous devez également appliquer un mécanisme similaire à ce bloc.

0

et vous pouvez

function check_for_error(data) { 
    try { 
     //WHEN ERROR OCCURES 
    } catch(e) { 
      alert('error occured'); 
       // I want program execution to halt here but it does not, 
       // it continues within the calling code 
      throw(e); 
      return; 
    } 
} 
0

Throw n'arrêteront l'exécution de rutines synchrones, Par exemple, si vous avez fait une demande asynchrone http, il sera exécuter la fonction de rappel indépendamment d'une erreur précédente.

Throw doc de w3c:

Syntaxe

exception de projection

L'exception peut être une chaîne, entier, booléen ou un objet.

Questions connexes