Quasar Framework, как расширение Vue.js, предоставляет встроенные механизмы для управления ошибками на уровне компонентов и глобально, что позволяет создавать стабильные и предсказуемые приложения. Обработка ошибок может быть реализована через try/catch, Vue error hooks, а также через специализированные компоненты и утилиты Quasar для уведомлений и логирования.
Для обработки ошибок внутри методов компонентов используется стандартный подход Jav * aScript:
methods: {
async fetchData() {
try {
const response = await axios.get('/api/data');
this.data = response.data;
} catch (error) {
this.$q.notify({
type: 'negative',
message: `Ошибка загрузки данных: ${error.message}`
});
console.error(error);
}
}
}
Ключевые моменты:
try/catch позволяет ловить как сетевые ошибки, так и
ошибки выполнения кода.Quasar наследует возможности Vue.js для глобальной обработки ошибок.
В boot файлах Quasar можно зарегистрировать обработчик
ошибок для всего приложения:
export default async ({ app }) => {
app.config.errorHandler = (err, vm, info) => {
console.error('Произошла ошибка:', err);
console.info('Информация:', info);
vm.$q.notify({
type: 'negative',
message: 'Произошла непредвиденная ошибка'
});
};
};
Особенности:
err — объект ошибки.vm — компонент, в котором произошла ошибка.info — строка с контекстом (например, “mounted
hook”).Quasar совместим с подходом Vue 3 ErrorBoundary, который позволяет изолировать ошибки внутри конкретного компонента, не ломая весь интерфейс:
Преимущества:
Для повышения UX ошибки часто сопровождаются визуальными уведомлениями. Quasar предоставляет два основных инструмента:
this.$q.notify({
type: 'negative',
message: 'Не удалось загрузить данные'
});
this.$q.dialog({
title: 'Ошибка',
message: 'Не удалось выполнить операцию',
ok: true
});
Применение:
Для крупномасштабных приложений важна интеграция с серверным логированием:
methods: {
async fetchData() {
try {
const response = await axios.get('/api/data');
this.data = response.data;
} catch (error) {
await axios.post('/api/log', { error: error.message, stack: error.stack });
this.$q.notify({ type: 'negative', message: 'Ошибка загружена на сервер' });
}
}
}
Преимущества:
Quasar использует Vue Router, поэтому ошибки при переходе между страницами также можно контролировать:
router.beforeEach((to, from, next) => {
try {
// Проверка прав доступа или данных
next();
} catch (error) {
console.error(error);
next('/error-page');
}
});
Особенности:
Такой подход обеспечивает многослойную защиту приложения и делает его устойчивым к неожиданным ситуациям.