下面是别人写的课。
我面临的问题是,当它与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(默认);
}
返回属性
}