Реализация выглядит отлично; вам не нужно много делать в классе исключений. Вы могли бы подумать о добавлении членов для того, что было, что было на складе, сколько было запрошено, и сколько было на складе, когда был сделан запрос, чтобы код, перехватывающий исключение, имел доступ к этой информации. Так, например, здесь у меня есть код товара:
public class OutOfStockException extends Exception {
private int stockCode;
public OutOfStockException(int stockCode){
super();
this.stockCode = stockCode;
}
public OutOfStockException(String s){
super(s);
this.stockCode = stockCode;
}
public int getStockCode() {
return this.stockCode;
}
}
Вы можете создать такой файл:
throw new OutOfStockException(StockCodes.WIDGET, "Out of widgets");
Но это зависит от вас, и в этот момент это просто классный дизайн, как и все остальное.
Много раз, с такими вещами, я только включает конструкторы с отдельными частями, а затем сам класс генерирует сообщение для базового сообщения Exception
getMessage
. Итак:
public class OutOfStockException extends Exception {
private int stockCode;
public OutOfStockException(int stockCode){
super("Out of " + StockCodes.getDescription(stockCode));
this.stockCode = stockCode;
}
public int getStockCode() {
return this.stockCode;
}
}
// Throwing one:
throw new OutOfStockException(StockCodes.WIDGETS);
Но опять же, это просто классный дизайн в этот момент.
Все это в стороне, и это немного не по теме, но отсутствие товара на складе кажется мне нормальной, а не исключительной ситуацией; Вы уверены, что исключение действительно правильный способ его моделирования?