什么异常适合在缺少android权限时抛出?

时间:2013-09-19 14:21:41

标签: java android exception coding-style android-permissions

希望强制使用权限并“快速失败” - 一些较旧的API无声地失败IIRC - 所以我想出了:

private static void assertPermission(Context ctx, String perm) {
    final int checkPermission = ctx.getPackageManager().checkPermission(
        perm, ctx.getPackageName());
    if (checkPermission != PackageManager.PERMISSION_GRANTED) {
        throw new IllegalStateException("Permission " + perm
            + " is required");
    }
}

我想使用适合抽象的权限 - 并遵循有效的Java建议:赞成使用标准异常。

  • 我应该使用IllegalStateException还是更合适一些? 例外?
  • 我应该使用已检查的例外吗?

2 个答案:

答案 0 :(得分:2)

如果您想要一般的Java异常,我会使用UnsupportedOperationException,这是在尝试不受支持的操作时使用的RuntimeException

根据文档,IllegalStateException更多地与VM本身相关联:

  

在VM不在的情况下尝试操作时抛出   正确的状态。

答案 1 :(得分:0)

基于@ Selvin的评论我让android抛出异常 - 我得到了:

  

09-20 17:13:39.115:E / AndroidRuntime(1688):java.lang.SecurityException:需要READ_PHONE_STATE:用户10064和当前进程都没有android.permission.READ_PHONE_STATE。

所以确实看起来android使用java.lang.SecurityException - 并且与android一致我将不得不使用这个