处理Android自定义内容提供程序中的(跨进程)异常

时间:2012-08-15 20:16:55

标签: android exception-handling error-handling android-contentprovider

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

我应该如何向来电者指明异常状态?我是否必须以某种方式将其编码为我的返回数据并依赖客户端进行检查?还有其他选择吗?如果将编码转换为普通的返回数据,那么最好的方法是什么? (我可以看到Cursor调用返回的query的一些替代方案,但Uri返回的insertint返回的内容如何? updatedelete?)

1 个答案:

答案 0 :(得分:15)

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

  • IllegalStateException
  • IllegalArgumentException
  • NullPointerException
  • SecurityException
  • BadParcelableException

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

  • UnsupportedOperationException
  • NetworkOnMainThreadException

来源:Creating Content Providers提及IAENPE;我猜他们其他人的工作基于the Javadoc for Parcel.writeException

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

我也对其他解决方案感兴趣。