在android中,我抛出了以下错误:
java.lang.NoSuchFieldError: android.os.Build.SERIAL
仅在某些设备上发生,例如:“sec_smdk6410”或“sdkDemo”。
我试图捕获异常,但忽略了try / catch块。
try {
return android.os.Build.SERIAL;
} catch (Exception e) {
return null;
}
无论如何,我可以检测是否会抛出此错误以调整我的代码吗?
感谢。
答案 0 :(得分:6)
文档说明它仅适用于API级别9。 您可以使用以下方法检查API级别:
if(Build.VERSION.SDK_INT >= 9)
// safe to use
else
// ignore
未经测试,但我会试一试
答案 1 :(得分:0)
NoSuchFieldError
不是Exception
,而是Error
(这就是为什么它没有被你的代码捕获)。
Errors
和Exceptions
都是Throwables
。这意味着Errors
也可以被捕获:
try {
return android.os.Build.SERIAL;
} catch (NoSuchFieldError e) { //Notice the change here
return null;
}