我的Android应用中有一个自定义内容提供商,运行得相当好。我希望其他应用也可以访问我的内容提供商。我想要一些干净的方式来传达异常和错误,但据我所知,Android内容提供程序框架没有提供任何方法来跨进程传播异常。
我应该如何向调用者指明异常状态?我是否必须以某种方式将其编码为我的返回数据并依赖客户端进行检查?还有其他选择吗?如果将编码转换为普通的返回数据,那么最好的方法是什么? (我可以看到一些替代品 Cursor
由...返回 query
打电话,但是怎么样 Uri
归来的 insert
, 或者 int
归来的 update
要么 delete
?)
有一个简短的清单 RuntimeException
子类,如果在提供程序中抛出,将在客户端应用程序中重新抛出。这些包括:
IllegalStateException
IllegalArgumentException
NullPointerException
SecurityException
BadParcelableException
最新的更新 Parcel.writeException
文件补充
UnsupportedOperationException
NetworkOnMainThreadException
资源: 创建内容提供商 提到 IAE
和 NPE
;我猜想其他人会在此基础上工作 Javadoc for Parcel.writeException
。
客户端应用程序只会获取详细消息,而不是堆栈跟踪或原因堆栈。对于可以编码为a的异常状态 String
(详细信息),这是一个合理的选择。
我也对其他解决方案感兴趣。