Czy muszę „return” po „throw” w JavaScript?

100

Rzucam Errorz mojej metody, z której chcę wcześniejszego wyjścia, jak poniżej:

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

Czy muszę umieścić return;oświadczenie po moim throw? Na razie działa dla mnie. Jeśli jest to zbędne, wolałbym go nie umieszczać, ale nie jestem pewien, co mogą zrobić różne przeglądarki.

Mateusz
źródło

Odpowiedzi:

165

Nie musisz umieszczać returninstrukcji po throw, returnlinia nigdy nie zostanie osiągnięta, ponieważ zgłoszenie wyjątku natychmiast przekazuje kontrolę z powrotem do dzwoniącego.

Rob M.
źródło
1
„rzucenie wyjątku natychmiast przekazuje sterowanie z powrotem do wywołującego” ... Chyba że istnieje funkcja CATCH obsługująca zgłoszony błąd w dowolnej ścieżce stosu wywołań.
Mahesh
12
@Mahesh Nie jestem pewien, co masz na myśli, mówiąc „chyba że” - każdy ZŁAP w stosie poniżej miejsca, w którym thrownastąpiło zdarzenie, jest częścią „dzwoniącego”
Rob M.
Otrzymałem console.log po linii „throw new Error ()”, a ten plik console.log jest wykonywany. Więc dlaczego tak jest?
Aleks Grunwald