奇怪的崩溃 "java.lang.ArithmeticException divide by zero"
Weird crashes "java.lang.ArithmeticException divide by zero"
最近我从 Firebase Crashlytics 中发现一些 HTC/Fortuneship
设备因下一个异常而崩溃,我不明白为什么
val formattedViews: String
get() = String.format(Locale.getDefault(), "%,d %s", viewCount, Util.getString(R.string.views))
我不明白这段代码怎么会出现这样的异常
这些设备有问题吗?
这是 JDK 附带 Android 7 的错误:https://bugs.openjdk.java.net/browse/JDK-8167567
您正在将 Locale.getDefault()
传递给 format()
,这与根本不指定区域设置相同。唯一已知的解决方法似乎是使用已知良好的语言环境来进行格式化(例如 Locale.US
),但这当然意味着您不会为美国以外的用户获得特定于语言环境的数千组。
或者您可以将格式规范更改为不使用分组(即 %d
不带逗号)。
也许您可以 catch
例外并为那些会崩溃的用户回退到美国格式?这就是这些人所做的:https://github.com/wordpress-mobile/WordPress-Android/pull/5604/files
最近我从 Firebase Crashlytics 中发现一些 HTC/Fortuneship 设备因下一个异常而崩溃,我不明白为什么
val formattedViews: String
get() = String.format(Locale.getDefault(), "%,d %s", viewCount, Util.getString(R.string.views))
我不明白这段代码怎么会出现这样的异常
这些设备有问题吗?
这是 JDK 附带 Android 7 的错误:https://bugs.openjdk.java.net/browse/JDK-8167567
您正在将 Locale.getDefault()
传递给 format()
,这与根本不指定区域设置相同。唯一已知的解决方法似乎是使用已知良好的语言环境来进行格式化(例如 Locale.US
),但这当然意味着您不会为美国以外的用户获得特定于语言环境的数千组。
或者您可以将格式规范更改为不使用分组(即 %d
不带逗号)。
也许您可以 catch
例外并为那些会崩溃的用户回退到美国格式?这就是这些人所做的:https://github.com/wordpress-mobile/WordPress-Android/pull/5604/files