我从Crashlytics收到报告,尝试通过解析BigDecimal
值创建String
对象时发生了几次崩溃:
Fatal Exception: java.lang.NumberFormatException
For input string: "2999.00"
与崩溃相关的行仅通过解析给定BigDecimal
中的值来创建新的String
对象:
var value = BigDecimal(strippedInput)
这在各种设备和Android版本上随机发生。
如果2999.00是BigDecimal
可以解析的完全正常的数字,怎么会发生此异常?
我尝试查看报告的String
的十六进制值,并且看起来其中没有静默空格。 Crashlytics是否有可能在报告的String
内删除了诸如无声空格之类的怪异符号?
我无法重现这种情况。
完整的crashlytics报告:
java.lang.Long.parseLong (Long.java:443)
java.lang.Long.parseLong (Long.java:485)
java.math.BigDecimal. (BigDecimal.java:344)
java.math.BigDecimal. (BigDecimal.java:425)
com.mypackage.android.ui.widget.CustomEditText$textWatcher$1.onTextChanged (CustomEditText.java:58)
android.widget.TextView.sendOnTextChanged (TextView.java:8189)
android.widget.TextView.handleTextChanged (TextView.java:8251)
android.widget.TextView$ChangeWatcher.onTextChanged (TextView.java:10382)
android.text.SpannableStringBuilder.sendTextChanged (SpannableStringBuilder.java:1208)
android.text.SpannableStringBuilder.replace (SpannableStringBuilder.java:578)
android.text.SpannableStringBuilder.delete (SpannableStringBuilder.java:230)
android.text.SpannableStringBuilder.delete (SpannableStringBuilder.java:229)
android.text.method.BaseKeyListener.backspaceOrForwardDelete (BaseKeyListener.java:346)
android.text.method.BaseKeyListener.backspace (BaseKeyListener.java:68)
android.text.method.BaseKeyListener.onKeyDown (BaseKeyListener.java:455)
android.text.method.NumberKeyListener.onKeyDown (NumberKeyListener.java:138)
android.widget.TextView.doKeyDown (TextView.java:6287)
android.widget.TextView.onKeyDown (TextView.java:6077)
android.view.KeyEvent.dispatch (KeyEvent.java:2677)
android.view.View.dispatchKeyEvent (View.java:9894)
android.view.ViewGroup.dispatchKeyEvent (ViewGroup.java:1667)