我不知道我的案例中的最佳做法是什么:

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/

10-11 02:38
查看更多