Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        5年前关闭。
                    
                
        

我有以下二传手:

public void setId(String id) {
        try{
            Integer partnerId = Integer.parseInt(id);
            if (partnerId <= 0){
                throw new NumberFormatException();
            }
        } catch(NumberFormatException e){
        }
        this.id = id;
    }


这是检查传递的参数是否为大于0的整数的好方法吗?

最佳答案

不要抛出NumberFormatException异常,因为如果字符串存在格式问题,那就没错-它只是超出范围。抛出的标准且正确的异常是带有消息的IllegalArgumentException。而且,作为一般规则(适用于此处),您不应该感到无所适从,而对此却无能为力。

尝试这个:

public void setId(String id) {
    if (Integer.parseInt(id) < 1){
        throw new IllegalArgumentException("id must be greater than zero:" id);
    }
    this.id = id;
}


也:


删除了int变量,因为您没有使用它进行比较
删除了try catch-让异常冒出来。如果客户通过了错误的dara,那就是他们的问题

08-19 07:59