#ember.js #error-handling
#ember.js #обработка ошибок
Вопрос:
Я хочу реализовать некоторую согласованную обработку ошибок в моем приложении с помощью error
действия. Проблема, с которой я столкнулся, заключается в том, что она запускается только тогда, когда возникает исключение во время перехода, а не, например, при простом saveModelInResponseToUserClick
действии на маршруте.
Я могу как-то заставить что-то работать со следующим, но это взлом:
Ember.onerror = function(error) {
MyApp.__container__.lookup('router:main').send('handleError')
}
При этом у меня могла бы быть другая логика обработки ошибок в маршрутах с разными вложениями.
РЕДАКТИРОВАТЬ: Другая проблема с использованием описанного выше метода заключается в том, что ошибка возникает до того, как приложение полностью перешло на свой первый маршрут — в этом случае возникает другое исключение, и все взрывается.
Есть ли другой подход, который я могу использовать с этим?
Ответ №1:
Как вы сказали, действие ошибки будет срабатывать только во время перехода.
Для ошибок, которые могут возникнуть в результате действия, вы могли бы попробовать использовать следующее:
Ember.RSVP.on('error', function(error) {
// handle error
}
Это позволит перехватить ЛЮБУЮ ошибку, возникающую в результате обещания в вашем приложении. Вы можете получить доступ к объекту «ошибка» внутри функции, который предоставит вам некоторую информацию о том, что именно пошло не так, в частности, атрибут «responseText». Сам код отправляется в ваш app.js файл.
Документы Ember по этому поводу: http://emberjs.com/guides/understanding-ember/debugging/#toc_errors-within-an-code-rsvp-promise-code