首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕捉NumberFormatException

捕捉NumberFormatException
EN

Stack Overflow用户
提问于 2012-11-13 10:42:13
回答 3查看 286关注 0票数 0

下面是别人写的类。

我面临的问题是,当它进入null as the rawStringparse method时,它抛出了NumberFormatException

所以我想要做的是,我应该抓住NumberFormatException和set the value itself as null。所以我这样做是对的吗?

代码语言:javascript
复制
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;
    }
}
EN

回答 3

Stack Overflow用户

发布于 2012-11-13 10:56:22

你需要做四件事:

  1. 决定无法解析的数字字符串在您将使用该方法的上下文中的含义。这是否意味着程序中存在内部问题?一个损坏的文件?用户输入错误?没有错,但是这个字符串需要被处理differently?
  2. Decide,这是最好的处理方式,考虑到这一点。几乎所有情况下,如果错误是由外部输入触发的,您需要将其报告回来。替换null 可能是处理它的好方法。
  3. 记录您决定要做的事情。如果一个方法要返回具有特定含义的null,则需要将其写为注释,最好是Javadoc commments.
  4. Implement您的决定。

我得到的印象可能是不公平的,您直接跳到了步骤4,而没有考虑可能的原因和适当的问题报告。

票数 2
EN

Stack Overflow用户

发布于 2012-11-13 10:46:04

您可以添加一个带有如下条件的提前退出:

代码语言:javascript
复制
if (rawString != null) {
    return attr; // or other value you prefer
}

您还可以确保parse方法的调用方测试null值,并避免在空值时调用parse。

票数 1
EN

Stack Overflow用户

发布于 2012-11-13 10:49:53

这取决于应用程序中对空值的容忍度。如果您希望用户不将空字符串传递给parse()方法,那么您应该进行防御性的null检查并抛出异常。

代码语言:javascript
复制
if (null == rawString) {
    throw new CustomException("rawString cannot be null");
}

这同样适用于NumberFormatException的catch块,您应该抛出一个带有适当消息的异常,而不是默默地将Byte属性的值设置为null。

但是,如果null是完全可接受的,那么您应该执行防御性的null检查,并将Byte属性设置为null。NumberFormatException当然不应该被抑制,IMHO。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13354875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档