11

我的 Android 应用程序中有一个自定义内容提供程序,它运行良好。我希望其他应用程序也可以访问我的内容提供商。我想要一些干净的方式来传达异常和错误,但据我所知,Android 内容提供程序框架没有提供任何跨进程传播异常的方法。

我应该如何向我的调用者指示异常状态?我是否必须以某种方式将其编码到我返回的数据中并依靠客户来检查它?有没有其他选择?如果编码成普通的返回数据,最好的方法是什么?Cursor(我可以看到调用返回的许多替代方案query,但是Uri返回的insert,或int返回的updateordelete呢?)

4

1 回答 1

17

有一个简短的RuntimeException子类列表,如果在提供程序中抛出,将在客户端应用程序中重新抛出。这些包括:

  • IllegalStateException
  • IllegalArgumentException
  • NullPointerException
  • SecurityException
  • BadParcelableException

Parcel.writeException添加了对文档的更新

  • UnsupportedOperationException
  • NetworkOnMainThreadException

来源:创建内容提供者提到IAENPE;我猜其他人会基于Javadoc 为Parcel.writeException.

客户端应用程序只会获取详细消息,而不是堆栈跟踪或原因堆栈。对于可以编码为String(详细消息)的异常状态,这是一个合理的选择。

我仍然对其他解决方案感兴趣,也是。

于 2012-08-17T19:40:09.440 回答