¿Cómo puede Javascript duplicar el modelo de ejecución de cuatro partes try
- catch
- else
- finally
compatible con otros idiomas?Javascript try ... catch ... else ... finalmente como Python, Java, Ruby, etc.
Un resumen claro y breve es del Python 2.5 what's new. En términos javascript:
// XXX THIS EXAMPLE IS A SYNTAX ERROR
try {
// Protected-block
} catch(e) {
// Handler-block
} else {
// Else-block
} finally {
// Final-block
}
Se ejecuta el código en Protegidas por el bloque de. Si el código arroja una excepción, se ejecuta Handler-block; Si no se lanza ninguna excepción, se ejecuta Else-block.
No importa lo que sucedió anteriormente, El bloque final se ejecuta una vez que se completa el bloque de código y se manejan las excepciones lanzadas. Incluso si hay un error en Controlador-bloque o Else-block y se genera una nueva excepción, el código en Final-block se sigue ejecutando.
Tenga en cuenta que el corte bloque else y pegar al final de Protegidas por el bloque de es equivocada. Si ocurre un error en Else-block, no debe ser manejado por Handler-block.
Totally. Estaba pensando en hacer un módulo rápido de NPM para hacer esto. Dejé esto fuera de mi respuesta porque tienes que tener cuidado ya que el valor 'this' cambiará frente al simple 'intento' anidado. Sin embargo, mi segundo ejemplo también tiene ese error. – JasonSmith
Derecha. Probablemente deseamos vincular el 'this' de la persona que llama a las cuatro devoluciones de llamada. Vamos a llamarlo un ejercicio para el lector;) – Jakob
Acabo de volver a cruzar esto. Tenga en cuenta que, en las versiones más nuevas de JavaScript, la notación "flecha grasa" hace que la sintaxis sea aún más legible. – JasonSmith