Следим за ошибками
Представьте себе, приложения на WP7, иногда падают. Да-да-да, ваши супер-пупер приложения могут падать. Нереально оттестировать все случаи, именно потому и существуют логи. Но представьте себе, вести лог на компьютере и вести лог на мобильном устройстве, на котором скорость чтения/записи меньше, место для хранения - ограниченно. Вот почему нам необходимо отслеживать ошибки и ловить их в тот момент, когда они случаются. На WP7, когда возникает необработанное исключение, оно гасится операционной системой, потому разработчики всегда видят просто закрывающееся приложение. Согласитесь, всегда хотелось бы иметь информацию о том, что произошло, когда возникла ошибка? Во время тестирования приложения - не возникает проблем. А вот когда вы выкатываете его пользователям, начинаются ужасы :) Давайте рассмотрим способ оповещения разработчиков об ошибках. Сначала реализуем способ, который оповещает об ошибках сразу по возникновению, потом тот, который отправляет отчеты после перезапуска. Отчет сразу Главное, что необходимо понимать, так это то, что вам будет необходимо взаимодействовать с пользователями. Многие из них не будут отправлять отчеты, и это уже ваше дело, предлагать им отправить их или заставлять их это сделать. Теперь, когда мы это поняли, необходимо сделать так, что бы наш код работал только в релизе и только на устройстве. Реализовав это, после нескольких версий приложений, начинаешь путаться в том, исправили этот баг или нет, потому и докрутили распознавание версии, и добавление ее к письму. Ну, и естественно, все это оборачивается в отправку письма на специальный адрес:
Второй вариант проверки на ошибки При возникновении ошибки, вызывается функция, которая записывает данные об ошибке в хранилище и позволяет приложению спокойно помереть выключиться. После перезапуска приложения, происходит проверка на наличие файла, и если он есть, приложение спрашивает, отправлять ошибку или нет. После отправки, файл удаляется. Так можно насобирать пачку ошибок и за один раз отправить все. Код этого примера честно скопирован отсюда. Если совместить с прошлым примером, можно получить отличную штуку. Немного позже расскажу как сделать так, что бы точно знать СКОЛЬКО раз в вашем приложении вылетала ошибка.
Ну, и что бы это заработало, нам необходимо в App.xaml.cs добавить вызов метода LittleWatson.ReportException в Application_UnhandledException и RootFrame_NavigationFailed. Добавляйте этот код до проверки на дебагер. И самое главное, не забыть вызвать LittleWatson.CheckForPreviousException при инициализации приложения. Надеюсь, что вы выберете какое-то решение, и ваши приложения всегда будут уведомлять вас об ошибках? которых будет очень мало :) |