下面是别人写的课。

我面临的问题是,当它与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有意义,则您的方法可行。
但是,如果使用不可理解的参数(包括parse)调用null,则需要考虑是否应该引发异常。一种替代方法是捕获NumberFormatException并在程序中引发具有语义含义的其他异常。


    公共静态ByteAttr parse(String rawString)抛出BadAttributeException {
        ByteAttr attr =新的ByteAttr();
        尝试{
            attr.setValue(Byte.valueOf(rawString));
        } catch(NumberFormatException nfEx){
            抛出新的BadAttributeException(nfEx); //包装原始异常
        }
        返回属性
    }



另一种技术是在parse无法识别的情况下将默认值传递给rawString


    公共静态ByteAttr parse(String rawString,Byte defaultValue){
        ByteAttr attr =新的ByteAttr();
        尝试{
            attr.setValue(Byte.valueOf(rawString));
        } catch(NumberFormatException nfEx){
            attr.setValue(默认);
        }
        返回属性
    }

10-04 19:45