所有字段为空时点击支付按钮触发App崩溃(NumberFormatException)
问题:空输入字段点击支付按钮触发App崩溃
当所有输入字段为空时,点击支付按钮后App直接崩溃,捕获到的异常堆栈信息如下:
Exception dispatching input event Exception in MessageQueue callback: handleReceiveCallback java.lang.NumberFormatException: For input string: "" at java.lang.Integer.parseInt(Integer.java:627) at java.lang.Integer.parseInt(Integer.java:650) at com.fevziomurtekin.payview.Payview.checkAllFormFields(Payview.kt:532) at com.fevziomurtekin.payview.Payview.access$checkAllFormFields(Payview.kt:28) at com.fevziomurtekin.payview.Payview$initViews$6.onTouch
异常原因分析
异常为NumberFormatException,触发点在Payview.kt文件的checkAllFormFields方法第532行——代码尝试将空字符串转换为整数,空字符串无法被解析为有效整数,直接触发崩溃。
解决方案
1. 前置输入校验
在执行整数转换前,先校验输入字符串是否为空或空白字符,拦截无效输入:
// 针对需要转换为整数的输入字段 val inputContent = inputField.text.toString().trim() if (inputContent.isEmpty()) { // 提示用户填写必填项 Toast.makeText(context, "请填写必要的数字信息", Toast.LENGTH_SHORT).show() return false // 终止校验流程,避免进入转换逻辑 }
2. 异常捕获兜底
即使前置校验存在遗漏,也可以通过捕获异常避免App崩溃:
try { val inputNumber = inputContent.toInt() // 正常业务逻辑处理 } catch (e: NumberFormatException) { // 处理非数字/无效输入的情况 Toast.makeText(context, "请输入有效的数字", Toast.LENGTH_SHORT).show() }
3. 输入限制优化
给输入字段添加输入类型限制(如仅允许数字输入),从源头减少无效输入:
<!-- 在布局文件中设置输入类型 --> <EditText android:id="@+id/number_input" android:inputType="number" ... />
内容的提问来源于stack exchange,提问作者Zahid Rehman
相关产品推荐
相关产品推荐

