【发布时间】:2014-06-09 17:14:32
【问题描述】:
对于以下问题的琐碎性质,我深表歉意,但在 Google 搜索几分钟后我找不到答案。
我有一个 Java 对象,它充当开发人员 SDK 的前端。此对象称为DataCollectionManager。与大多数(如果不是全部)Android 管理器对象(CameraManager、LocationManager 等)一样,DataCollectionManager 管理与设备上运行的服务的连接。
当使用 SDK 的客户端创建 DataCollectionManager 对象时,构造函数将绑定到设备上运行的 DataCollectionService。客户端向构造函数提供一个侦听器接口,该接口将在服务连接建立时被回调。一旦通知了此侦听器,客户端就知道可以在 DataCollectionManager 上进行 API 调用。
但是,客户端可能会在建立服务连接之前尝试进行 API 调用。在这种情况下,我在每个方法的顶部都有一个如下所示的代码块:
if (!mServiceBound) {
// do something
}
如果服务未绑定,我想抛出异常,但我不确定是哪一个。
我应该抛出哪个异常?我想抛出一个检查异常,这样客户端代码就不会崩溃。是否存在适合这种情况的预先存在的异常,还是我应该定义自己的异常?
【问题讨论】:
-
如果你不希望它被检查,我建议
IllegalStateException,但在这种情况下,定义你自己的声音最好,因为它是你自己设计的一类。它迫使开发人员思考他们的代码。 -
@DaveMorrissey 嗯,你可能是对的。在这种情况下,如果客户端代码在收到服务连接回调之前调用这些 API,则从技术上讲是不正确的。我想我会使用 IllegalStateException。我刚刚查看了相关文档,看起来它是专门用于此类目的的。如果您想将您的评论表述为下面的答案,我很乐意给它打勾。
标签: java android exception exception-handling