Есть функция, которая обрабатывает штрих-коды коробок. В ходе ее выполнения происходит множество различных проверок, например: была ли коробка уже отсканирована, если ли коробка на складе и т.д. Если вдруг не проходит любая из проверок, нужно выкидывать сообщение c ошибкой. Вопрос в том, как правильно выкидывать такие сообщения. Варианта два (примерный код):
1. Через исключения
// callback от сканера
public void callbackScaner(String data) {
try {
scanBarcode(String barcode);
} catch (Exeprion e) {
showMsg(e.getMessage());
}
}
// обработка бар-кода
public void scanBarcode(String barcode) throws Exception {
Box box= getProd(barcode);
if (box== null) throw new Exeption("Коробки нет на складе");
if (box.ready) throw new Exeption("Коробка уже отсканирована");
...
}
2. Через проверку
// callback от сканера
public void callbackScaner(String data) {
scanBarcode(String barcode);
}
// обработка бар-кода
public void scanBarcode(String barcode) throws Exception {
Box box= getProd(barcode);
if (box== null) {
showMsg("Коробки нет на складе");
return;
}
if (box.ready) {
showMsg("Коробка уже отсканирована");
return;
}
...
}
Честно говоря мне нравится первый подход. Код более лаконичный. Знаю что плохо закладывать логику в блок catch {}, но здесь ее вроде бы и нет. Судя по другим отзывам, блок try {} не оказывает влияние на производительность, если не происходит исключений.
Ваше мнение?