我不知道什麼是在我的情況的最佳實踐:最佳實踐 - 異常處理
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。 但我總是有例外的問題。因此,我的最後一個解決方案是在searchBrand和searchCar方法中拋出異常,在使用searchBrand/searchCar的所有方法(如getCarSeatSomething)上添加拋出,並嘗試... catch當我使用這些方法時(比如getCarSeatSomething )。
這是正確的嗎? 如果不是,你有更好的想法嗎?
編寫代碼以使用值 - 並避免出現異常,除非出現異常情況(通常不能在直接級別恢復)。基本上,問這些:當請求不能被執行時會發生什麼?誰是過錯?對此有何期待? – user2864740
如果我沒有找到一輛車,我必須記錄它。這是呼叫者的錯,而不是包含汽車的對象。 – kaoziun
「避免**異常**,**除**當發生**異常**時」 - - 真棒:-) – Leo