Странные сбои "java.lang.ArithmeticException делить на ноль" - PullRequest
1 голос
/ 12 апреля 2019

Недавно я узнал от Firebase Crashlytics, что какой-то HTC / Fortuneship происходит сбой устройств со следующим исключением, и я не могу понять, почему

enter image description here

val formattedViews: String
   get() = String.format(Locale.getDefault(), "%,d %s", viewCount, Util.getString(R.string.views))

Я не понимаю, как такое исключение может произойти в этом коде

Что-то не так с этими устройствами?

* +1012 *enter image description here

1 Ответ

2 голосов
/ 12 апреля 2019

Это ошибка в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...