Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android中数字格式异常的更好处理_Java_Android_Validation_Exception Handling - Fatal编程技术网

Java android中数字格式异常的更好处理

Java android中数字格式异常的更好处理,java,android,validation,exception-handling,Java,Android,Validation,Exception Handling,我有以下代码片段,我正在考虑将其重构为一个更抽象的应用程序异常处理程序,但我想首先确保它尽可能整洁 关于如何改进此代码或使其更具可恢复性的任何建议 int id = -1; final StringBuilder errorMessage = new StringBuilder("Bad Input Value: "); try { id = Integer.parseInt(edtId.getText().toString()); } catch (final NumberFo

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

关于如何改进此代码或使其更具可恢复性的任何建议

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.
}
intid=-1;
最终StringBuilder errorMessage=新StringBuilder(“错误输入值:”);
试一试{
id=Integer.parseInt(edtId.getText().toString());
}捕获(最终编号格式e){
errorMessage.append(“解析id失败”+e.getMessage());
}
if(id<0){
errorToast(errorMessage.toString());
}否则{
//继续从数据库中检索值,知道id已被解析
//正确设置为正整数。
}

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

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

如果用户在文本字段中输入“-1”会怎样?它将小于零或者我缺少什么?在这种情况下,errorMessage.toString()将是一个空白字符串,没有特别的帮助。您的逻辑假设小于0的值是错误。如果用户输入了负值,那么您将假定存在解析错误。至于你的问题,这取决于应用程序和设计。很难断章取义地概括。如何报告错误?消息把盒子变成红色?很多变量。我编辑了字符串构造函数以消除您突出显示的歧义。好主意,我认为继续正常运行意味着try块将包含比我希望的更多的代码,如果我在try块内声明,我不能在try块外使用id。@Luke:理想情况下,您将
int
传递给另一个处理DB内容的方法。您还可以使用
java.lang.Integer
及其“null特性”。