visual try nodejs new error ejemplo catch exception-handling finally

exception handling - nodejs - ¿Cuál es el punto de finalmente en una prueba try catch/except finally



try catch typescript (3)

He utilizado las variantes de prueba-captura / excepción-finalmente en muchos idiomas durante años, hoy alguien me preguntó cuál es el punto de la decisión final y no pude responder.

Básicamente, ¿por qué pondrías una declaración en lugar de ponerla después de todo el bloque try-catch? O en otras palabras, hay una diferencia entre los siguientes bloques de código:

try{ //a} catch {//b} finally {//c} try{//a} catch{//b} //c

EDITAR:
PERSONAS, sé lo que finalmente hace, lo he estado usando durante años, pero mi pregunta está en el ejemplo anterior, poner //c en finalmente parece redundante, ¿no es así?


El propósito de un bloque final es garantizar que el código se ejecute en tres circunstancias que no se manejarán de forma muy limpia utilizando solo bloques de "captura":

  1. Si el código dentro del bloque `try` sale a través de` return`
  2. Si el código dentro de un bloque catch vuelve a lanzar la excepción capturada, o, accidental o intencionalmente, termina lanzando una nueva.
  3. Si el código dentro del bloque `try` encuentra una excepción para la cual no hay captura.

Uno podría copiar el código final antes de cada return o lanzamiento, y envolver catch bloques de catch dentro de su propio intento / captura para permitir la posibilidad de que ocurra una excepción accidental, pero es mucho más fácil renunciar a todo eso y simplemente usar un bloque final.

Por cierto, una cosa que deseo que incluyan los diseñadores de idiomas sería un argumento de exception para el bloque finally , para tratar el caso en el que uno necesita limpiar después de una excepción pero aún quiere que se filtre la pila de llamadas (por ejemplo, uno podría envolver la código para un constructor en tal construcción, y Dispose el objeto en construcción si el constructor iba a salir con una excepción).


Finalmente, el bloque se ejecuta incluso si se lanza una excepción en el bloque try. Por lo tanto, por ejemplo, si abrió una secuencia antes, es posible que desee cerrarla ya sea que se lance una excepción o no. Finalmente el bloque es útil para tal problema.


Finally asegúrese de que su código se ejecute incluso si obtiene una excepción.

El bloque finally es útil para limpiar los recursos asignados en el bloque try, así como para ejecutar cualquier código que deba ejecutarse incluso si hay una excepción

http://msdn.microsoft.com/en-us/library/zwc8s4fz(v=vs.80).aspx