Android:java.lang.NoSuchFieldError:android.os.Build.SERIAL

时间:2012-02-07 12:55:45

标签: android

在android中,我抛出了以下错误:

java.lang.NoSuchFieldError: android.os.Build.SERIAL

仅在某些设备上发生,例如:“sec_smdk6410”或“sdkDemo”。

我试图捕获异常,但忽略了try / catch块。

    try {
        return android.os.Build.SERIAL;
    } catch (Exception e) {
        return null;
    }

无论如何,我可以检测是否会抛出此错误以调整我的代码吗?

感谢。

2 个答案:

答案 0 :(得分:6)

文档说明它仅适用于API级别9。 您可以使用以下方法检查API级别:

if(Build.VERSION.SDK_INT >= 9)
    // safe to use 
else
   // ignore

未经测试,但我会试一试

答案 1 :(得分:0)

NoSuchFieldError不是Exception,而是Error(这就是为什么它没有被你的代码捕获)。

ErrorsExceptions都是Throwables。这意味着Errors也可以被捕获:

try {
    return android.os.Build.SERIAL;
} catch (NoSuchFieldError e) { //Notice the change here
    return null;
}

有关"Differences between Exception and Error"的更多信息。