Я думаю, что две основные проблемы с моими программами - это моя структура кода / организация и обработка ошибок. Я читаю Code Complete 2, но мне нужно что-то прочитать для работы с потенциальными проблемами.
Например, на веб-сайте, если что-то может произойти только в том случае, если пользователь изменяет данные с помощью javascript, вы пишете для этого? Кроме того, когда вы не ловите ошибки? Когда вы пишете класс, который ожидает строку и int в качестве входных данных, а они не являются строкой и int, вы проверяете это или позволяете ему пузыриться вызывающему методу, который передал неверные параметры?
Я знаю, что это широкая тема, на которую нельзя ответить одним ответом, поэтому я ищу книгу или ресурс, который обычно считается обучением правильной практике обработки исключений.
Ответы:
Одна из хороших вещей, которую нужно помнить, - выполнять обработку исключений
when there is a need
.Для платформы разработки .NET просто следуйте рекомендациям MSDN - Рекомендации по обработке исключений , а также ознакомьтесь с этой замечательной статьей проекта кода - Рекомендации по обработке исключений в .NET
Тем не менее, следующие рекомендации в основном верны для любой платформы разработки:
Не управляйте бизнес-логикой с исключениями. Вместо этого используйте условные выражения. Если элемент управления можно сделать с помощью оператора if-else четко, не используйте исключения, поскольку это снижает удобочитаемость и производительность (например, нулевое управление, деление на нулевое управление). ,
Имена исключений должны быть четкими и осмысленными с указанием причин исключения.
Бросать исключения для условий ошибки при реализации метода. Например, если вы возвращаете значения -1, -2, -3 и т. Д. Вместо FileNotFoundException, этот метод не может быть понят.
Поймать конкретные исключения вместо верхнего класса исключений. Это принесет дополнительную производительность, удобочитаемость и более конкретную обработку исключений.
Нулевой элемент управления с условными выражениями не является альтернативой отлову исключения NullPointerException. Если метод может вернуть значение null, управляйте им с помощью оператора if-else. Если возврат может вызвать исключение NullPointerException, перехватите его.
Старайтесь не выбрасывать исключение из-за цены. Но если повторное выбрасывание было обязательным, повторно создайте то же исключение вместо создания нового исключения. Это принесет дополнительную производительность. Вы можете добавить дополнительную информацию в каждом слое к этому исключению.
Определите свою собственную иерархию исключений, расширив текущий класс Exception (например, UserException, SystemException и их подтипы) и используйте их. Делая это, вы можете специализировать свои исключения и определить повторно используемый модуль / слой исключений. больше, чтобы следовать в этой ссылке
источник