¿Hay algo en la línea de Python 'pass' en javascript?javascript pass
Quiero hacer el equivalente de javascript:
try:
# Something that throws exception
catch:
pass
¿Hay algo en la línea de Python 'pass' en javascript?javascript pass
Quiero hacer el equivalente de javascript:
try:
# Something that throws exception
catch:
pass
pass
is a no-op in Python. que lo necesite para bloques vacíos porque
try:
# Something that throws exception
catch:
# continue other stuff
is a syntax error. En JavaScript, puede usar un bloque catch
vacío.
try {
// Something that throws exception
}
catch (e) {}
hay, y aquí está:
Así es, nada en absoluto:
try {
somethingThatThrowsAnException();
} catch (e) {
}
Quiero hacer el equivalente Javascript de:
try: # Something that throws exception catch: pass
Python no tiene try/catch. Tiene try/except. Por lo que reemplazar catch
con except
, tendríamos lo siguiente:
try {
// throw any exception
} catch(err) {}
El bloque de código vacío después de la captura es equivalente a Python de pass
.
Buenas Prácticas
Sin embargo, se podría interpretar esta pregunta un poco diferente. Supongamos que quiere adoptar la misma semántica que Python try/except block. El manejo de excepciones de Python es un poco más matizado, y le permite especificar qué errores atrapar.
De hecho, se considera una buena práctica capturar únicamente tipos de error específicos.
lo tanto una versión mejor práctica para Python sería, ya que sólo desea capturar las excepciones de que está preparado para manejar, y evitar errores de ocultación:
try:
raise TypeError
except TypeError as err:
pass
Usted debe probablemente subclase el tipo de error apropiado, estándar Javascript no tiene una jerarquía de excepciones muy rica. Elegí TypeError
porque tiene la misma ortografía y semántica similar a la TypeError
de Python.
Para seguir la misma semántica para esto en Javascript, primero tenemos have to catch all errors, por lo que necesitamos un flujo de control que se ajuste a eso. Entonces, debemos determinar si el error no es el tipo de error que queremos pass
con una condición if. La falta de control de flujo es lo que silencia el TypeError
. Y con este código, en teoría, todos los demás tipos de errores se suben a la superficie y ser fijos, o al menos ser identificados para el tratamiento de errores adicionales:
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
}
}
Comentarios bienvenidos!
Las llaves vacías no funcionan?Por cierto, comer silenciosamente excepciones es casi siempre lo incorrecto. –
[Referencia de Try/Catch] (https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch) – Jason
Para el punto de Adam, tengo una nueva respuesta a esta vieja pregunta que se ajusta para Python manejo de errores matizados a continuación aquí: http://stackoverflow.com/a/28288015/541136 –