【问题标题】:Better handling of number format exception in android更好地处理android中的数字格式异常
【发布时间】:2011-12-28 20:05:39
【问题描述】:

我有以下代码 sn-p,我正在考虑将其重构为更抽象的应用程序异常处理程序,但我想先确保它尽可能整洁

关于如何改进此代码或使其更可重复使用的任何建议

int id = -1;
final StringBuilder errorMessage = new StringBuilder("Bad Input Value: ");
try {
        id = Integer.parseInt(edtId.getText().toString());
} catch (final NumberFormatException e) {
        errorMessage.append("Failed to parse id " + e.getMessage());
}

if (id < 0) {
    errorToast(errorMessage.toString());
} else {
    //go ahead an retreive values from database knowing the id has been parsed
    //correctly to a positive int.
}

【问题讨论】:

  • 如果用户在文本字段中输入“-1”会怎样?
  • 它会小于零还是我遗漏了什么?
  • 在这种情况下 errorMessage.toString() 将是一个空白字符串,不是特别有用
  • 您的逻辑假定小于 0 的值是错误的。如果用户输入了一个负值,您会假设存在解析错误。至于您的问题,这取决于应用程序和设计。脱离上下文很难一概而论。你如何报告错误?信息?把盒子变成红色?变量很多。
  • 我已经编辑了字符串构造函数以消除您突出显示的歧义。

标签: java android validation exception-handling


【解决方案1】:

为什么要将 id 预分配给幻数?

try {
    int id=Integer.parseInt(edtId.getText().toString());
    //go on as normal
} catch (NumberFormatException e) {
    //handle error
}

【讨论】:

  • 好主意,我认为正常进行意味着 try 块将包含比我想要的更多的代码,如果我不能在 try 块之外使用 id在里面声明它。
  • @Luke:理想情况下,您将int 传递给另一个处理您的数据库内容的方法。您还可以使用java.lang.Integer 及其“空功能”。
猜你喜欢
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多