Y a-t-il quelque chose du genre python 'pass' en javascript?
Je veux faire l'équivalent javascript de:
try:
# Something that throws exception
catch:
pass
pass
est un no-op en Python. Vous en avez besoin pour les blocs vides car
try:
# Something that throws exception
catch:
# continue other stuff
est une erreur de syntaxe . En JavaScript, vous pouvez simplement utiliser un bloc catch
vide.
try {
// Something that throws exception
}
catch (e) {}
Il y a, et le voici:
C'est vrai, rien du tout:
try {
somethingThatThrowsAnException();
} catch (e) {
}
Je veux faire l'équivalent javascript de:
try: # Something that throws exception catch: pass
Python n'a pas try/catch. Il a essayé/sauf. Donc, en remplaçant catch
par except
, nous aurions ceci:
try {
// throw any exception
} catch(err) {}
Le bloc de code vide après la capture est équivalent à pass
de Python.
Meilleures pratiques
Cependant, on pourrait interpréter cette question un peu différemment. Supposons que vous souhaitiez adopter la même sémantique qu'un bloc Python try/except. La gestion des exceptions de Python est un peu plus nuancée et vous permet de spécifier les erreurs à détecter.
En fait, il est considéré comme une meilleure pratique de ne capturer que des types d'erreur spécifiques.
Ainsi, une version de meilleure pratique pour Python serait, car vous voulez intercepter uniquement les exceptions que vous êtes prêt à gérer et éviter de masquer les bogues:
try:
raise TypeError
except TypeError as err:
pass
Vous devriez probablement sous-classer le type d'erreur approprié, Javascript standard n'a pas une hiérarchie d'exceptions très riche. J'ai choisi TypeError
car il a la même orthographe et la même sémantique que TypeError
de Python.
Pour suivre la même sémantique pour cela en Javascript, nous avons d'abord devons attraper toutes les erreurs , et nous avons donc besoin d'un flux de contrôle qui s'ajuste pour cela. Nous devons donc déterminer si l'erreur n'est pas le type d'erreur que nous voulons pass
avec une condition if. L'absence d'autre flux de contrôle est ce qui fait taire le TypeError
. Et avec ce code, en théorie, tous les autres types d'erreurs devraient remonter à la surface et être corrigés, ou du moins être identifiés pour une gestion supplémentaire des erreurs:
try { // try:
throw TypeError() // raise ValueError
} catch(err) { // # this code block same behavior as
if (!(err instanceof TypeError)) { // except ValueError as err:
throw err // pass
}
}
Commentaires bienvenus!