Нужно ли мне возвращать `return` после` throw` в JavaScript?


100

Я выбрасываю Errorиз своего метода, из которого я хочу ранний выход, как показано ниже:

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

Нужно ли мне ставить return;заявление после моего throw? На данный момент это работает для меня. Если это лишнее, я бы предпочел не вставлять его, но я не уверен, что могут делать разные браузеры.

Ответы:


165

Вам не нужно помещать returnоператор после throw, returnлиния никогда не будет достигнута, поскольку выброс исключения немедленно передает управление обратно вызывающей стороне.


1
«выброс исключения немедленно передает управление обратно вызывающей стороне» ... Если только нет CATCH для обработки выданной ошибки на любом пути стека вызовов.
Махеш

12
@Mahesh Я не уверен, что вы имеете в виду под «Если» - любой CATCH в стеке внизу, где throwпроизошел, является частью «вызывающего»
Роб М.

У меня есть console.log после строки throw new Error (), и этот console.log выполняется. Так почему это так?
Алекс Грюнвальд,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.