Даже если выдача исключения не является медленной, это - все еще плохая идея выдать исключения для нормального процесса выполнения программы. Используемый этот путь это походит на GOTO...
я предполагаю, что это действительно не отвечает на вопрос все же. Я предположил бы, что 'стандартная' мудрость выдающих исключения, будучи медленной была верна в более ранних версиях Java (< 1.4). Создание исключения требует, чтобы VM создали все отслеживание стека. Много изменилось с тех пор в VM для ускорения вещей, и это вероятно одна область, которая была улучшена.
Найдите концепцию под названием «Domain Driven Design» - самая важная вещь, которая заключается в использовании так называемого шаблона репозитория (например, вашего класса UserDB) в качестве адаптера к базе данных, а также завод. Затем ваши бизнес-объекты или объекты предметной области включают в себя бизнес-логику и могут обрабатывать взаимодействия с другими бизнес-объектами.
Какую технологию вы используете? Что-то вроде ActiveRecord, вероятно, может вам сильно помочь.
Обычно бизнес-правила применяются в вашем BLL. Например, вы можете разрешить обычным сотрудникам колл-центра предлагать 10% скидку на новую услугу, но разрешить менеджеру предлагать скидку 20%. У вас будет бизнес-правило в вашем BLL, которое выглядит примерно так:
// Pseodocode
double Discount
{
set
{
if (value > 10% AND Employee Is Not Manager) then throw Exception
if (value > 20%) then throw Exception
discount = value;
}
}