我有以下二传手:
public void setId(String id) {
try{
Integer partnerId = Integer.parseInt(id);
if (partnerId <= 0){
throw new NumberFormatException();
}
} catch(NumberFormatException e){
}
this.id = id;
}
检查传递的参数是否大于0的整数是一种好方法吗?
答案 0 :(得分:3)
抛出以指示应用程序已尝试转换a 字符串到其中一个数字类型,但字符串没有 适当的格式。
这不是你的情况,如果你坚持抛出异常,实现你自己的类:
public class LowerThanZeroException extends Exception {
public LowerThanZeroException() { super("Number is lower than zero"); }
}
或者只使用IllegalArgumentException
。
我认为try
和catch
对你来说不是最好的选择(虽然这实际上取决于你的逻辑),但也考虑使用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;
}
此外:
答案 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;}
}