Если не ошибаюсь.
"throw" - исключение.
"catch" - ловить или перехватить ошибку.
Работает в идеале все в единой связке "try-catch-finally".
Исключение - событие ( что то не так в коде).
Возбудить исключение ( или создать, бросить ) - сигнализировать об исключительной ситуации в коде.
Перехватить исключения - значит выполнить действе для обработки кода ( восстановить работоспособность ).
try {
// здесь в коде что то может пойти не так, если есть поломка " бросить" исключение.
} catch(err) {
// здесь пишем обработчик ошибки (в переменную err предается код возникшей ошибки) например аргумент оператора throw , генерируем исключение.
throw new Error ( "Ошибка в блоке №...");
} finally {
// Здесь пишем, что должно выполнится в любом случае, есть ли ошибка или нет ( или при завершении по любому оператору перехода return, break, continue).
}