Какой catch написан правильно
Вопрос
Функция сохраняет черновик и при отсутствии сети должна молча отложить запись. Какой catch правильный?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
catch (e) { if (!navigator.onLine) return queueDraft(); console.error(e); }catch (e) { console.log(e); queueDraft(); return; }catch (e) { queueDraft(); }catch (e) { if (e instanceof NetworkError) queueDraft(); else throw e; }правильный ответ
Разбор
Ловить стоит только то, что умеешь обработать. Отсутствие сети это ожидаемая ситуация, её обрабатываем; всё остальное (баг в коде, ошибка сервера, TypeError) пробрасываем выше, где его залогируют или покажут. Первый вариант при любой ошибке, кроме офлайна, только пишет её в консоль и глотает, а второй логирует и откладывает запись при любой ошибке, выдавая баг за «нет сети». Третий вариант тоже глотает любые ошибки и маскирует их под «нет сети».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.