java - 捕获 NumberFormatException

标签 java numberformatexception

下面是别人写的类。

我面临的问题是,当它进入parse method时与 null as the rawString ,它正在扔NumberFormatException

所以我想做的是,我应该捕获 NumberFormatException 和 set the value itself as null 。那么我的做法是对的吗?

public class ByteAttr {

    @JExType(sequence = 1)
    private Byte value;

    public static ByteAttr parse(String rawString) {
        ByteAttr attr = new ByteAttr();
        try {
            attr.setValue(Byte.valueOf(rawString));
        } catch (NumberFormatException nfEx) {
            attr.setValue(null);
        }
        return attr;
    }

    public Byte getValue() {
        return this.value;
    }

    public void setValue(Byte value) {
        this.value = value;
    }
}

最佳答案

正确的方法取决于您想要在程序中完成的任务。

  • 如果 ByteAttr.getValue() 在程序中稍后返回 null 有意义,那么您的方法就可行。
  • 但是,您需要考虑如果使用无法解读的参数(包括 null)调用 parse,您是否应该抛出异常。另一种方法是捕获 NumberFormatException 并抛出一个在程序中具有语义含义的不同异常。
    public static ByteAttr parse(String rawString) throws BadAttributeException {
        ByteAttr attr = new ByteAttr();
        try {
            attr.setValue(Byte.valueOf(rawString));
        } catch (NumberFormatException nfEx) {
            throw new BadAttributeException(nfEx); // wrap original exception
        }
        return attr;
    }
  • 另一种技术是在 rawString 无法破译的情况下将默认值传递给 parse:
    public static ByteAttr parse(String rawString, Byte defaultValue) {
        ByteAttr attr = new ByteAttr();
        try {
            attr.setValue(Byte.valueOf(rawString));
        } catch (NumberFormatException nfEx) {
            attr.setValue(default);
        }
        return attr;
    }

关于java - 捕获 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354875/

相关文章:

java - 如何在 JAVA 中解析文本文件的输入?

java - 输入字符串 "2013"的 NumberFormatException

java - 我应该如何在 Selenium 的一种方法中检查 5 次有效登录?

java - ActiveMQ:如何在客户端设置死信策略?

java - 当我运行 jframe 时,它​​总是显示 "java.lang.NumberFormatException: empty String"

java - 来自十六进制数的 NumberFormatException

java - 什么是NumberFormatException,我该如何解决?

java - 使用 Java 学习 Eclipse 可视化编辑器 Swing

java - NetBeans 7.4 无法获取系统 Java 编译器。请使用 JDK,而不是 JRE

java - 如何获取对象或类的方法列表?