Комментарии 24
Глядя на примеры с toString можно подумать, что раньше оно весь код в одну строку выводило, а теперь разбивает по строкам.
Хотя на самом деле, раньше оно теряло выравнивание, а теперь не теряет.
Если объект исключения не используется в блоке catch
То это плохой код.
Исключение либо надо как-то обрабатывать, хотя бы в тот же лог записать, либо вообще не ловить.
Если это feature detect — то не нужно. Если исключение было при попытке записать что-то в лог — то его тоже в лог записывать не нужно.
2. Как часто Вы заворачиваете console.log() в try-блок?
let templateEngine;
try {
eval("true");
templateEngine = jitTemplateEngine;
} catch {
templateEngine = interpreterTemplateEngine;
}
По-хорошему, в catch-блоке надо проверить тип ошибки, и выбросить ее дальше если он неправильный. Сэкономит потом время на отлов багов в этом месте
Но тут есть два вопроса:
Какой тип ошибки предполагается увидеть? В стандарте не указывается какое исключение кидает eval будучи запрещённой через CSP!
Какое ещё исключение в принципе возможно в этом блоке? От чего предполагается защищаться?
Хотя бы проверять, что это был EvalError, а не какой-то еще. Можно получить ReferenceError: jitTemplateEngine is not defined
, если где-нибудь в имени переменной опечататься.
Так как вы надёжно отличите EvalError от какого-то ещё, если стандарт не указывает какоё именно исключение выбрасывать?
1. А можно пример подобного feature detect? Я что-то не представляю, как по факту наличия какого-то (неизвестного!!!) исключения можно сделать вывод, о доступности/недоступности чего-либо.
function isTouchDevice() {
try {
document.createEvent('TouchEvent');
return true;
}
catch {
return false;
}
}
Примеры использования некоторых новых возможностей JavaScript