Лучшие практики или рекомендации по обработке исключений? [закрыто]

12

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

Например, на веб-сайте, если что-то может произойти только в том случае, если пользователь изменяет данные с помощью javascript, вы пишете для этого? Кроме того, когда вы не ловите ошибки? Когда вы пишете класс, который ожидает строку и int в качестве входных данных, а они не являются строкой и int, вы проверяете это или позволяете ему пузыриться вызывающему методу, который передал неверные параметры?

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

mowwwalker
источник
1
какой язык и платформу разработки вы используете?
Юсубов
1
Я думаю, что «Чистый код» имеет хорошую главу об этой проблеме
Hoàng Long
Что сказал @ElYusubov. Детали реализации и стандарты языка / платформы, с которыми вы имеете дело, имеют большое влияние на лучшие практики.
vaughandroid

Ответы:

12

Одна из хороших вещей, которую нужно помнить, - выполнять обработку исключений when there is a need.

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

Тем не менее, следующие рекомендации в основном верны для любой платформы разработки:

  • Не управляйте бизнес-логикой с исключениями. Вместо этого используйте условные выражения. Если элемент управления можно сделать с помощью оператора if-else четко, не используйте исключения, поскольку это снижает удобочитаемость и производительность (например, нулевое управление, деление на нулевое управление). ,

  • Имена исключений должны быть четкими и осмысленными с указанием причин исключения.

  • Бросать исключения для условий ошибки при реализации метода. Например, если вы возвращаете значения -1, -2, -3 и т. Д. Вместо FileNotFoundException, этот метод не может быть понят.

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

  • Нулевой элемент управления с условными выражениями не является альтернативой отлову исключения NullPointerException. Если метод может вернуть значение null, управляйте им с помощью оператора if-else. Если возврат может вызвать исключение NullPointerException, перехватите его.

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

  • Определите свою собственную иерархию исключений, расширив текущий класс Exception (например, UserException, SystemException и их подтипы) и используйте их. Делая это, вы можете специализировать свои исключения и определить повторно используемый модуль / слой исключений. больше, чтобы следовать в этой ссылке

Юсубы
источник
2
Некоторые хорошие общие моменты, хотя я не думаю, что ваш 5-й пункт («Нулевой контроль с помощью условных выражений ...») очень ясен.
vaughandroid
1
Несколько хороших ссылок для Java: onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=1 today.java.net/pub/a/today/2006/04/06/…
vaughandroid