2015-08-18 2 views
0

У меня есть операция/метод, который выполняет вставку в базу данных. Требуется несколько полей и по разным причинам, что операция может завершиться неудачно, потому что один или несколько входов не были уникальными или потому что они конфликтуют с некоторыми внутренними записями, которые должны быть уникальными.Должен ли вход пользователя вызывать проверенные исключения?

saveUserInfo(primaryToken,secondaryToken,userid); 

Будет ли иметь смысл для меня бросить проверенное исключение при каждом нарушении?

Мое мышление было использовать следующее:

saveUserInfo(String primaryToken, String secondaryToken, String id) 
throws PrimaryTokenTakenException,SecondaryTokenTakenException 

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

оппозиции Противники этого подхода указывают на то, что мы, команда разработчиков, знают о каждом из случаев ошибок, которые может вызвать этот сбой, и вместо этого должен возвращать код ошибки и использовать, чтобы обрабатывать каждый случай ,

int errorCode = saveUserInfo(primaryToken,secondaryToken,userid); 

Я не вижу очевидных недостатков проверенного подхода. Вероятно, эти ошибки случаются, и вы абсолютно должны обращаться к ним в любом месте saveUserInfo(). Кажется, именно в этой ситуации были созданы исключения.

+0

Исключения, которые ожидаются, не очень исключительны, не так ли? –

+0

@JarrodRoberson Я возьму ваш downvote и очень конструктивную статью как исключение во время выполнения. –

ответ

0

Это, безусловно, правильный и разумный подход к использованию проверенных исключений для обработки недопустимого ввода пользователя, если ваша программа способна обнаруживать и правильно восстанавливать данные из этих случаев. Проверенные исключения просто означают, что ваши программные интерфейсы должны устанавливать и следовать контракту в отношении обработки ошибок логики программы, в то время как исключения без проверки (runtime) являются исключениями, которые происходят таким образом, что ваша программа не может безопасно восстановить их во время выполнения. Метод , в котором вы обрабатываете исключения, может зависеть от философии вашей команды разработчиков, но проверенный и непроверенный случай все еще имеет место - вы знаете, как обнаруживать и обоснованно восстанавливаться с недопустимого ввода, поэтому вам необходимо что-то сделать Это.

См. this page re: исключения в Java, для руководства.