55 votes

La gestion des erreurs Javascript avec try .. catch .. finally

Je soupçonne que je suis à l'aide de l' finally bloc de manière incorrecte, et que je ne comprends pas les fondamentaux de son but...

 function myFunc() {
      try {
           if (true) {
                throw "An error";
           }
      } catch (e) {
           alert (e);
           return false;
      } finally {
           return true;
      }
 }

Cette fonction vous permet de lancer l' catch bloc, d'alerte "Une erreur", mais alors retourner vrai. Pourquoi ne pas retourner faux?

84voto

Gilean Points 6455

Le bloc finally contient les instructions à exécuter après les blocs try et catch exécuter mais avant les déclarations à la suite de la try...catch déclaration. Le bloc finally est exécuté si une exception est levée. Si une exception est levée, les déclarations contenues dans le bloc finally est exécuté même si aucun bloc catch gère l'exception. plus

L' finally bloc sera toujours courir, essayer de retourner true après votre try bloc

function myFunc() {
     try {
         if (true) {
               throw "An error";
          }
          return true;
     } catch (e) {
          alert (e);
          return false;
     } finally {
          //do cleanup, etc here
     }
 }

10voto

Alan Oursland Points 637

Enfin blocs exécuter lorsque vous quittez le bloc try. Dans votre code, ce qui se passe quand vous renvoie false. Qui définit la valeur de retour de faux et de tentatives pour quitter la fonction. Mais d'abord, il doit quitter le bloc try qui déclenche la enfin et écrase la valeur de retour est true.

Il est considéré par beaucoup comme une bonne pratique de programmation ont une seule instruction return par fonction. Envisager de faire un var retval au début de votre fonction et la valeur true ou false dans votre fonction, puis de structurer le code afin qu'il soit correctement grâce à un simple retour à la base.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X