web-dev-qa-db-fra.com

lancer générique donnant un objet à jeter erreur de charpie

Ci-dessous le code de lancement donnant une erreur de peluche Attendait un objet à lancer sans littéral

throw { code : 403, message : myMessage };

si j'essaye lance une nouvelle erreur, je ne reçois pas eslint mais cela donne [Object Object] dans la réponse.

throw new Error({ code : 403, message : myMessage });

Quelqu'un pourrait-il me dire comment corriger Attendait qu'un objet soit jeté erreur? sans supprimer la configuration/règles eslint

11
Munna Babu
 throw Object.assign(
   new Error(myMessage),
   { code: 402 }
);

Lancez une erreur régulière et étendez-la avec des champs personnalisés.


Vous pouvez également écrire une classe d'erreur réutilisable pour cela:

  class CodeError extends Error {
   constructor(message, code) {
    super(message);
    this.code = code;
   }
 }

 throw new CodeError(myMessage, 404);

De cette façon, vous pouvez facilement distinguer les erreurs lors de la capture:

  } catch(error) {
    if(error instanceof CodeError) {
      console.log(error.code);
    } else {
      //...
    }
 }
15
Jonas Wilms

Une autre solution de contournement simple est l'erreur de stockage sur la variable et la levée.

let errorMessage =  { code : 403, message : myMessage };
throw errorMessage;
5
Munna Babu