Предположим, что на бизнес-уровне мы имеем следующий метод. Какова наилучшая практика сказать слою пользовательского интерфейса, что что-то пошло не так, и вы также получите сообщение об ошибке? Должен ли метод возвращать пустую строку, когда она была в порядке, в противном случае это сообщение об ошибке, или оно должно вызывать другое исключение в коде catch, которое обертывает исключение пойманного? Если мы выберем второй вариант, тогда пользовательский интерфейс должен иметь другую попытку, поймать, что слишком много попробовать, поймать, может быть. Вот псевдокод для первого варианта.Связь между слоями в приложении
public String updateSomething()
{
try
{
//Begin transaction here
dataLayer.do1();
dataLayer.do2();
dataLayer.doN();
//Commit transaction code here
}
catch(Exception exc)
{
//Rollback transaction code here
return exc.message;
}
return "";
}
Это хорошая практика или я должен сделать другое исключение в catch (тогда метод будет недействительным)?
+1, я люблю первый путь. Я лично ненавижу беспорядок попытки. Разве не здорово писать «if (updateSomething()) {}« вместо «try {updateSomething();} catch (Exception) {}"? –
У меня есть любовь к прямолинейности техники «если». Но есть преимущества для метода исключений, например, когда вам приходится много раз называть множество методов, вы можете написать: 'try {something(); что-то другое(); еще одна вещь(); л(); } catch (...) {} finally {alwaysRunThis(); } 'вместо проверки каждого оператора if на этом пути. Лошади для курсов ... –