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.

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.