Intereting Posts
Внутренняя ошибка произошла во время: «Индекс C / C ++» .java.lang.NullPointerException Динамическая установка фиксированной высоты для просмотра сетчатой ​​сетки OnItemClickListener не запускается в Android GridView Приложение Cordova «hello world» не будет отображаться Gotchas при использовании Google Analytics для Android SDK Блокировка управления медиа-экраном для пользовательского медиаплеера Отправка SMS через ADB на телефон Как получить отпечаток пальца от сенсора отпечатка пальца и сохранить его в базе данных? Пользовательская тема препятствует цвету фона snackbar Как использовать / не использовать устаревшие методы в Android Как протестировать приложение Android Wear для Android? Андроид на прослушивателе изменения текста Невозможно запустить службу Google Play на эмуляторе (необходимо обновить сервис Google Play) Начать новую активность из фрагмента Изменение стиля по умолчанию для Navigator.NavigationBar (заголовок)

Обработка исключений (кросс-процессов) в пользовательском контенте Android

У меня есть пользовательский контент-провайдер в моем приложении для Android, который работает достаточно хорошо. Я ожидаю, что другие приложения также получат доступ к моему поставщику контента. Я бы хотел, чтобы какой-то чистый способ обмениваться исключениями и ошибками, но насколько я могу судить, инфраструктура поставщика контента Android не предоставляет никакого способа распространения исключений между процессами.

Как указать состояние исключения для моего вызывающего абонента? Должен ли я каким-то образом закодировать его в мои возвращенные данные и полагаться на клиентов, чтобы проверить его? Есть ли альтернатива? Если кодирование в обычные данные о возврате – это лучший способ? (Я вижу несколько альтернатив для Cursor возвращаемых вызовом query , но как насчет Uri возвращаемого insert , или int возвращаемого update или delete ?)

Существует короткий список подклассов RuntimeException которые, если их бросить в провайдер, будут повторно RuntimeException в клиентское приложение. Эти:

  • IllegalStateException
  • IllegalArgumentException
  • NullPointerException
  • SecurityException
  • BadParcelableException

Источник: создание контент-провайдеров упоминает IAE и NPE ; Я догадался, что остальные будут работать на основе Javadoc для Parcel.writeException .

Клиентское приложение получит только подробное сообщение, а не трассировку стека или стек причин. Для исключительного состояния, которое может быть закодировано в String (подробное сообщение), это разумный выбор.

Меня все еще интересуют другие решения.