Как бороться с ошибками в производстве и держать пользователей на стороне
Никто не любит приложения, которые дают сбой или перестают работать должным образом. Обработка ошибок и восстановление после них, безусловно, важная задача для любого разработчика; не следует думать, что все пойдет гладко.
В этом посте мы говорим о том, что делать поверх регулярной обработки ошибок - в крайнем случае.
Ионные и необработанные ошибки
Обработка производственных ошибок Ionic отсутствует. Необработанное исключение или отклонение обещания в вашем JS-коде оставляет ваше приложение в неопределенном состоянии. Это может выглядеть нормально, но ваши пользователи будут сталкиваться с очень странным поведением и ошибками, которые просто не имеют смысла.
Реализуйте ErrorHandler
Лучший способ реализовать крайнюю обработку ошибок в Ionic и Angular - это реализовать собственный класс ErrorHandler.
Angular будет автоматически вызывать handleError
при возникновении исключения.
Для подключения пользовательского обработчика ошибок к Angular просто требуется предоставить его во время загрузки. Вероятно, вы захотите оставить обработчик ошибок по умолчанию Ionic в разработке и переключить обработчик ошибок на производство.
Что нам делать?
Точные требования будут зависеть от вашего приложения, но хорошей отправной точкой является всплывающее уведомление для пользователя с извинениями и просьбой перезагрузить приложение. Мы также открываем всплывающий экран Ionic во время перезагрузки приложения.
Перезагрузка приложения требует значительных усилий, но помните, что это последнее средство, поверх нашей обычной обработки ошибок.
Войти в стороннюю службу
Обработка ошибки - это только первый шаг в этом процессе. На самом деле мы хотим исправить ошибку. Не нужно ждать, пока ваш пользователь пожалуется - мы можем зарегистрировать ошибку в сторонней службе. Вы получите более удобный отчет об ошибках с трассировкой стека и журналами, что значительно упростит поиск и исправление ошибки.
В этом примере мы собираемся войти в Rollbar *, но есть много других доступных сервисов. Вы даже можете написать свой собственный.
Угловая дуга
В этом примере мы будем использовать angular-rollbar
, чтобы упростить процесс. Сначала мы добавим модуль в наш проект:
Далее мы настроим RollbarService
, который будет вставлен в наш ErrorHandler, и запишем ошибку.
Теперь наша ошибка будет регистрироваться для будущей отладки, и мы представили ошибку пользователю. Вероятно, они все еще недовольны ошибкой, но, по крайней мере, вы с ними честны.
Заключение
Теперь мы можем обнаруживать необработанные ошибки в производственной среде, регистрировать их в сторонней службе и уведомлять пользователя о том, что что-то пошло не так. Приложение перезапустится и никогда не останется в неопределенном состоянии. Это последнее средство, которое должно дополнять правильную, детальную обработку ошибок, но абсолютно необходимо для производственных приложений.
* У меня нет личных интересов или отношений с Rollbar, но мы время от времени пользуемся их услугами.
Первоначально опубликовано на www.nextfaze.com.