сначала проверить или попробовать catch?

Допустим, у меня есть функция, которая выглядит так:

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
}

Это также означает, что мне нужно создать несколько исключений самостоятельно. Хорошо то, что мне не нужно беспокоиться о том, какие проверки я должен подготовить заранее.

С ними я не уверен, какой из них является лучшим дизайном кода. Я лично предпочитаю первый метод, который более читабелен, но он слишком сильно зависит друг от друга, и становится хуже, когда мне нужно использовать его во многих местах. Пожалуйста, посоветуйте!

9
задан Davuth 2 August 2011 в 03:40
поделиться