NumberFormatException - 如何获取结果并抑制异常?

时间:2014-07-27 17:59:40

标签: java string exception

我想使用转换结果。我能这样做吗?

int num1 = Integer.parseInt(a.getText());

int num2 = Integer.parseInt(b.getText()); 

c.setText(String.valueOf(num1+num2));

2 个答案:

答案 0 :(得分:1)

1。将整个代码包装在try块中:

try {
    int num1 = Integer.parseInt(a.getText());

    int num2 = Integer.parseInt(b.getText()); 

    c.setText(String.valueOf(num1 + num2));
} catch(NumberFormatException ex) {
    // Ignore?

    // Handle?
    ex.printStackTrace();
}

2。在方法调用上使用try - catch块:

int num1;
try {
    num1 = Integer.parseInt(a.getText());
} catch(NumberFormatException ex) {
    // Ignore?

    // Handle?
    a.setText(0);
    num1 = 0;
}

3。解析之前V a lidate String

int num1 = a.getText().matches("-?\\d+") ? Integer.parseInt(a.getText()) : 0 /* Arbitrary Default Value */;

这三个选项中的任何一个都可以起作用;具体的选择应取决于你正在努力实现的目标。

答案 1 :(得分:0)

唯一的结果是您已经获得Exception。它告诉您该函数无法根据您的输入确定结果。例如:Integer.parseInt("a")会引发NumberFormatException,因为"a"通常不会被识别为数字; Integer.parseInt(" 42")NumberFormatException,因为" 42"不是完全数字。你当然可以实现像

这样的东西
public static int parseIntOrFallback(String text, int fallback) {
    try {
        return Integer.parseInt(text);
    } catch (NumberFormatException e) {
        return fallback;
    }
}

或尝试通过例如挽救输入调用trim()或使用您自己的解析。这三者都非常具体针对个人用例,您没有深入解释。