我不知道我的案例中的最佳做法是什么:
1:
public class garage {
private List<Car> cars = new ArrayList<Cars>();
public String getCarSeatSomething(String carName, String brandName) {
for(Car car : cars){
if(car.getName().equals(carName)){
Seats seats = car.getSeats();
List<Brand> brands = seats.getBrands();
for(Brand brand: brands ){
if(brand.getName().equals(brandName)){
return brand.something();
}
}
}
}
return null;
}
...
}
我有很多这样的方法,因此此解决方案将有一些冗余代码。
而且,在我的程序中,找不到车不是“正常”的事情,所以我认为我必须使用Exception no吗?
2:
public class Garage {
private List<Car> cars = new ArrayList<Car>();
public Something getCarSeatSomething(String carName, String brandName) {
Car car = searchCar(carName);
if(car == null)
return null;
else{
Seats seats = car.getSeats();
return seats.getSomething(brandName);
}
}
...
}
public class Seats {
private List<Brand> brands = new ArrayList<Brand>();
protected Something getSomething(brandName){
Brand brand = searchBrand(brandName);
if(brand == null)
return null;
else
return brand.something();
}
...
}
由于搜索仅在searchBrand和searchCar中,因此对于Garage类的每个方法来说,冗余代码更少,代码更少。
但是我总是有例外的问题。
因此,我的最后一个解决方案是在searchBrand和searchCar方法中引发异常,在所有使用searchBrand / searchCar的方法(例如getCarSeatSomething)上添加引发,并尝试在使用这些方法(例如getCarSeatSomething)时进行捕获。
那是对的吗 ?
如果没有,您有更好的主意吗?
最佳答案
看起来汽车名称和品牌名称将是用户提供的输入。在这种情况下,您应该期望用户提供不存在的名称。这不是例外。返回null
并在顶层将错误消息返回给用户。您可能会尝试“获取”某些东西而根本不获取它似乎是合理的。 null
在这里合适。但是,请确保您在整个应用程序中对此行为保持一致并记录下来。
关于java - 最佳实践-异常处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27724871/