Допустим, у меня есть функция, которая выглядит так:
public void saveBooking(/* some inputs */) {
//save into database
}
Перед сохранением в базу данных я должен выполнить различные проверки. В моей основной программе я могу сделать следующее:
//do all the validations and do any necessary handling. Then...
saveBooking(/*inputs*/);
Я уверен, что все данные должны пройти все необходимые проверки перед сохранением в базу данных. Однако это означает, что функция saveBooking ()
сильно зависит от методов проверки. Каждый раз, когда я хочу вызвать saveBooking ()
, я должен убедиться, что не забыл вызвать проверки.
В качестве альтернативы я могу поместить все проверки внутри самой функции, чтобы все Я должен просто вызвать метод, и обо всем позаботятся. Однако для того, чтобы обрабатывать все ошибки независимо, мне нужно заставить функцию генерировать исключения и перехватывать их в основной программе. Это должно выглядеть примерно так:
public void saveBooking(/* some inputs */) /* throws various exceptions */ {
//various validations
//save into database
}
//...and in the main program...
try{
saveBooking(/*inputs*/);
}
catch(MyException1 e1){
//do something
}
catch(MyException2 e2){
//do something
}
Это также означает, что мне нужно создать несколько исключений самостоятельно. Хорошо то, что мне не нужно беспокоиться о том, какие проверки я должен подготовить заранее.
С ними я не уверен, какой из них является лучшим дизайном кода. Я лично предпочитаю первый метод, который более читабелен, но он слишком сильно зависит друг от друга, и становится хуже, когда мне нужно использовать его во многих местах. Пожалуйста, посоветуйте!