Нужно ли мне возвращать `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 выполняется. Так почему это так?
Алекс Грюнвальд,