¿Necesito "regresar" después de "lanzar" en JavaScript?

96

Estoy lanzando un Errormétodo de un método mío del que quiero una salida temprana, como se muestra a continuación:

// No route found
if(null === nextRoute) {
    throw new Error('BAD_ROUTE');
}

¿Necesito poner una return;declaración después de mi throw? Funciona para mí, por ahora. Si es superfluo, prefiero no incluirlo, pero no puedo estar seguro de lo que podrían hacer los diferentes navegadores.

Mateo
fuente

Respuestas:

160

No es necesario que coloques una returndeclaración después throw, returnnunca se llegará a la línea, ya que al lanzar una excepción se devuelve el control inmediatamente a la persona que llama.

Rob M.
fuente
1
"lanzar una excepción inmediatamente devuelve el control al llamador" ... A menos que haya un CATCH para manejar el error lanzado en cualquier ruta de la pila de llamadas.
Mahesh
12
@Mahesh No estoy seguro de lo que quiere decir con "a menos que" - cualquier CATCH en la pila debajo de donde throwocurrió es parte de una "persona que llama"
Rob M.