🟠Использование try...catch
Оператор
try...catch позволяет обрабатывать ошибки, возникающие в блоке try. Если возникает ошибка, выполнение кода переходит к блоку catch.try {
// Код, который может вызвать ошибку
let result = riskyOperation();
console.log(result);
} catch (error) {
// Обработка ошибки
console.error('Произошла ошибка:', error.message);
}Пример использования
function riskyOperation() {
throw new Error('Что-то пошло не так');
}
try {
riskyOperation();
} catch (error) {
console.error('Произошла ошибка:', error.message); // Произошла ошибка: Что-то пошло не так
}🟠Использование блока finally
Блок
finally выполняется после того, как были выполнены блоки try и catch. Он выполняется независимо от того, произошла ли ошибка.try {
let result = riskyOperation();
console.log(result);
} catch (error) {
console.error('Произошла ошибка:', error.message);
} finally {
console.log('Этот блок выполнится в любом случае');
}🟠Обработка ошибок в асинхронных функциях
Для обработки ошибок в асинхронных функциях, использующих
async/await, также можно использовать try...catch.async function fetchData() {
try {
let response = await fetch('https://api.example.com/data');
if (!response.ok) {
throw new Error('Network response was not ok');
}
let data = await response.json();
console.log(data);
} catch (error) {
console.error('Произошла ошибка при получении данных:', error.message);
}
}
fetchData();🟠Использование промисов
При работе с промисами можно использовать методы
catch и finally для обработки ошибок.fetch('https://api.example.com/data')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Произошла ошибка при получении данных:', error.message);
})
.finally(() => {
console.log('Запрос завершен');
});🟠Глобальная обработка ошибок
Для глобальной обработки ошибок можно использовать обработчики событий
window.onerror и window.onunhandledrejection. Обработка ошибок выполненияwindow.onerror = function(message, source, lineno, colno, error) {
console.error('Произошла глобальная ошибка:', message);
return true; // предотвращает вывод ошибки в консоль браузера
};Обработка неотловленных промисов
window.onunhandledrejection = function(event) {
console.error('Неотловленный отказ в промисе:', event.reason);
};🟠Пользовательские ошибки
Можно создавать собственные ошибки с помощью класса
Error.class CustomError extends Error {
constructor(message) {
super(message);
this.name = 'CustomError';
}
}
try {
throw new CustomError('Это пользовательская ошибка');
} catch (error) {
console.error(error.name + ': ' + error.message); // CustomError: Это пользовательская ошибка
}Ставь 👍 и забирай 📚 Базу знаний