检查大于0的整数

时间:2014-11-26 12:08:27

标签: java integer

我有以下二传手:

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

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

4 个答案:

答案 0 :(得分:3)

NumberFormatException州:

  

抛出以指示应用程序已尝试转换a   字符串到其中一个数字类型,但字符串没有   适当的格式。

这不是你的情况,如果你坚持抛出异常,实现你自己的类:

public class LowerThanZeroException extends Exception {
    public LowerThanZeroException() { super("Number is lower than zero"); }
}

或者只使用IllegalArgumentException

我认为trycatch对你来说不是最好的选择(虽然这实际上取决于你的逻辑),但也考虑使用if语句。

另请注意,捕获异常并对其执行任何操作实际上都会隐藏问题。

答案 1 :(得分:1)

(partnerId <= 0)条件制作自定义例外。但是也要捕获数字格式异常,因为您可能正在尝试将字符串转换为整数。但如果你只想检查数字是否小于零,你可以在if statement中进行。无需抛出异常

答案 2 :(得分:1)

不要抛出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,这是他们的问题

答案 3 :(得分:1)

最简单的方法是使用if语句

public void setId(String id) {
        Integer partnerId;
        try{
            partnerId = Integer.parseInt(id);
        } catch(Exception e){ /*if parsing fails do ...*/ }
        if (partnerId <= 0){ this.id = /*some default value*/ }
        else {this.id = id;}
}