Вот аннотированный список предложений, которые я курировала от других больших ответов:
Поймайте все необработанные исключения.
Создать ExceptionHandler
, который реализует java.lang.Thread.UncaughtExceptionHandler
. Вы можете использовать этот класс для настройки и регистрации ошибок.
Put это: Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this));
внутри OnCreate()
метод (после super()
) каждого из вашего Activity
класса.
Для получения дополнительной информации, пожалуйста, обратитесь к этому большому ответу от Android exception handling best practice.
Вложите попытаться/поймать вокруг все коды, которые работают снаружи/снаружи. (например - коды с помощью 3-й компоненты партии)
Вложите попытаться/поймать вокруг все коды, которые вы знаете, может потерпеть неудачу на определенных условиях
- Когда нет подключения к Интернету
- Во время I/O Операции
- Когда есть потенциал для сумасшедших пользовательских входов
- Когда есть потенциал для деления на нулевые ситуации
Используйте try/catch на верхнем уровне, потому что все исключения пузырятся до верхнего уровня. Таким образом, во внутренних функциях, если нужно, вы можете использовать исключение throw
. Затем на верхнем уровне, уловов конкретных исключения и сортировать ваши типы исключений в блоке поймать правильно. (Отсылается из этого замечательного ответа: How using try catch for exception handling is best practice
Для пользовательского интерфейса вы должны предлагать «продолжение использования», предоставляя версию приложения с ограниченной функциональностью даже в случае возникновения ошибки (если ошибка вызвана, например, отсутствием подключение к интернету).
Чрезмерных нетерпеливым отчеты об ошибках, чтобы пользователь не является хорошей идея.
Постоянных сообщений об ошибках плохо. Сообщить пользователь сообщением и позволить пользователю закрыть/удалить его.
Reference 1 | Reference 2 | Reference 3 | Further Reading 1 | Further Reading 2 | Further Reading 3
Для андроида библиотека для удаленного необрабатываемых исключений, вы можете посмотреть на это: android-remote-stacktrace.
- Скачать файл .jar.
- Добавить его в Java Построить путь.
Добавить разрешение INTERNET: использует разрешение-андроида: имя = "android.permission.INTERNET"
В OnCreate
методе вашей деятельности или службы, поставить «ExceptionHandler.register (это, "http://your.domain/path"); '
- На вашем сервере разместите this PHP file, который вы можете редактировать, чтобы расширить функциональность.
Серверная часть не обрабатывается мной. Есть ли сервер по умолчанию, на который я могу отправить сообщение? –
Значение по умолчанию - http://trace.nullwire.com. Или вы можете использовать бесплатный веб-хостинг PHP для тестирования этой функции. – alexan
Я хочу отправить журналы на тот же сервер, где храню данные. И у меня есть API для этого, где я должен отправить множество других параметров с исключением. Поэтому мой вопрос заключается в том, какие исключения я должен уловить. –