Является ли хорошей практикой реализация бесполезной обработки исключений на случай, если другая часть кода не закодирована правильно?
Основной пример
Простой, так что я не теряю всех :).
Допустим, я пишу приложение, которое будет отображать информацию о человеке (имя, адрес и т. Д.), Данные извлекаются из базы данных. Допустим, я один кодирую часть пользовательского интерфейса, а кто-то другой пишет код запроса БД.
Теперь представьте, что в спецификациях вашего приложения сказано, что если информация о человеке неполная (скажем, имя отсутствует в базе данных), человек, кодирующий запрос, должен обработать это, возвращая «NA» для отсутствующего поля.
Что если запрос плохо закодирован и не обрабатывает этот случай? Что если парень, который написал запрос, обработает вам неполный результат, и когда вы попытаетесь отобразить информацию, все рухнет, потому что ваш код не подготовлен для отображения пустых вещей?
Этот пример очень простой. Я полагаю, что большинство из вас скажут: «Это не ваша проблема, вы не несете ответственности за этот сбой». Но это все еще ваша часть кода, которая терпит крах.
Другой пример
Допустим, сейчас я пишу запрос. В спецификациях говорится не то же самое, что и выше, но тот, кто пишет запрос «вставка», должен убедиться, что все поля заполнены при добавлении человека в базу данных, чтобы избежать вставки неполной информации. Должен ли я защитить свой запрос «select», чтобы убедиться, что я предоставляю пользователю UI полную информацию?
Вопросы
Что если в спецификациях явно не сказано «этот парень отвечает за решение этой ситуации»? Что, если третье лицо реализует другой запрос (аналогично первому, но в другой БД) и использует ваш код пользовательского интерфейса для его отображения, но не обрабатывает этот случай в своем коде?
Должен ли я сделать то, что необходимо для предотвращения возможного сбоя, даже если я не тот, кто должен заниматься плохим случаем?
Я не ищу такой ответ, как «(с) он несет ответственность за аварию», так как я не решаю конфликт здесь, я хотел бы знать, должен ли я защищать свой код от ситуаций, это не моя ответственность обрабатывать? Здесь достаточно простого «если что-то пустое».
В общем, этот вопрос решает избыточную обработку исключений. Я спрашиваю об этом, потому что когда я работаю один над проектом, я могу 2-3 раза кодировать аналогичную обработку исключений в последовательных функциях, «на всякий случай», я сделал что-то не так и позволил выйти из строя плохому делу.