2015-07-15 2 views
2

В моем приложении я хочу отправить журналы в случае сбоя на удаленный сервер. Я добавил блок try-catch и в catch я отправляю журналы на сервер. Я хочу знать, какие все исключения я должен уловить. Мне нужны журналы в случае каждой аварии, чтобы я мог ее исправить. Будет ли хорошая практика поймать все Исключения?Как отправить журналы приложений Android на удаленный сервер?

Заранее спасибо.

ответ

4

Вот аннотированный список предложений, которые я курировала от других больших ответов:

  • Поймайте все необработанные исключения.

    1. Создать ExceptionHandler, который реализует java.lang.Thread.UncaughtExceptionHandler. Вы можете использовать этот класс для настройки и регистрации ошибок.

    2. Put это: Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this)); внутри OnCreate() метод (после super()) каждого из вашего Activity класса.

    3. Для получения дополнительной информации, пожалуйста, обратитесь к этому большому ответу от Android exception handling best practice.

  • Вложите попытаться/поймать вокруг все коды, которые работают снаружи/снаружи. (например - коды с помощью 3-й компоненты партии)

  • Вложите попытаться/поймать вокруг все коды, которые вы знаете, может потерпеть неудачу на определенных условиях

    1. Когда нет подключения к Интернету
    2. Во время I/O Операции
    3. Когда есть потенциал для сумасшедших пользовательских входов
    4. Когда есть потенциал для деления на нулевые ситуации
  • Используйте 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, который вы можете редактировать, чтобы расширить функциональность.
+0

Серверная часть не обрабатывается мной. Есть ли сервер по умолчанию, на который я могу отправить сообщение? –

+0

Значение по умолчанию - http://trace.nullwire.com. Или вы можете использовать бесплатный веб-хостинг PHP для тестирования этой функции. – alexan

+0

Я хочу отправить журналы на тот же сервер, где храню данные. И у меня есть API для этого, где я должен отправить множество других параметров с исключением. Поэтому мой вопрос заключается в том, какие исключения я должен уловить. –

Смежные вопросы