2017-09-19 3 views
0

J'ai une question à propos de NodeJs. Depuis 6.6 il dit quand la promesse non gérée ne peut pas être récupérée.Node - Comment intercepter l'erreur split()?

Pour éviter cela, j'ai besoin d'attraper l'erreur, mais ... Si je l'ai eu, comment dois-je procéder? J'ai essayé d'ajouter .catch (err => console.log (err)) mais rien ne semble changer.

Merci d'avance! :)

+0

Le code que vous avez publié n'est pas asynchrone, ni ne renvoie de promesse. – lilezek

+0

Vous souhaitez mettre à jour votre extrait de code – Rowland

+0

Le code contient-il des 'Promise's imbriqués? – guest271314

Répondre

0

.catch (err => console.log (err)) est utilisé pour intercepter les erreurs des promesses. Utilisez le formulaire standard à la place:

try{ 
    args[1] = args[1].split('!')[1].split('>')[0] 
} 
catch(err){ 
    console.log(err) 
} 
+0

Merci Valera, cela fonctionne bien :) – Izio

0

Plus ou moins cela n'est pas prometteur. il est juste une simple déclaration javascript qui peut être capturé directement comme ci-dessous: Essayez d'utiliser des captures d'essai sur l'ensemble

try{ 
    args[1] = args[1].split('!')[1].split('>')[0] 
}catch(e){ 
console.log(e); 
// Most possible error would be TypeError: Cannot read property 'split' of undefined 
at <anonymous>:1:23 
} 
+0

Cela fonctionne plutôt bien. Merci. – Izio

0

lieu de capture, vous pouvez éviter une erreur en substituant une chaîne lorsque la première division ne produit aucun second indice .

args[1] = (args[1].split('!')[1] || "").split('>')[0]; 

Cela suppose que args[1] est certainement présente. Si ce n'est pas certain, vous pouvez faire une substitution similaire.

args[1] = ((args[1] || "").split('!')[1] || "").split('>')[0]; 

Et enfin, vous pouvez fournir une valeur par défaut dans le cas où une partie de qui a échoué à produire quelque chose d'utile.

args[1] = ((args[1] || "").split('!')[1] || "").split('>')[0] || "DEFAULT"; 
+0

C'est intelligent, merci pour le partage spanky – Izio

+0

De rien. – spanky