希望强制使用权限并“快速失败” - 一些较旧的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
还是更合适一些?
例外? 答案 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一致我将不得不使用这个