try...catch
Перехватывает ошибки, чтобы программа не остановилась.
Доступно с: ES3
Синтаксис
try { … } catch (error) { … } finally { … }Примеры
Ошибка не останавливает программу:
try {
JSON.parse('not JSON');
console.log('not printed');
} catch (error) {
console.log('Could not parse:', error.name);
}
console.log('The program goes on');Результат:
Could not parse: SyntaxError
The program goes onБлок finally выполняется всегда:
function load() {
try {
return 'data';
} finally {
console.log('cleanup');
}
}
console.log(load());Результат:
cleanup
dataОшибку можно не принимать в переменную:
function isJson(text) {
try {
JSON.parse(text);
return true;
} catch {
return false;
}
}
console.log(isJson('[1, 2]'), isJson('[1, 2'));Результат:
true falseПримечания
try...catch ловит ошибки только синхронного кода и await. Ошибку внутри setTimeout или промиса без await он не поймает.
Не перехватывайте ошибки «на всякий случай» и не оставляйте catch пустым: так настоящие проблемы становятся невидимыми.
См. также
- throw — Выбрасывает ошибку и прерывает выполнение функции.
- Error — Базовый класс ошибок: создаётся и выбрасывается через throw.
- Promise.prototype.catch — Обрабатывает ошибку промиса.
Вопросы и ответы по теме
В учебнике
- Ошибки и try...catch — Обработка ошибок в JavaScript: блоки try, catch и finally, объект ошибки, оператор throw и встроенные типы ошибок.