2015-02-12 3 views
1

В последнее время я перефазировал некоторый код Java ... Я обнаружил, что было заброшено много RuntimeExceptions (т. Е. Исключенных исключений). Я создал свое собственное проверенное исключение и заменил каждый экземпляр этих RuntimeExceptions своим собственным исключением. Затем это заставило меня проверить исключения.Всегда использовать проверенные исключения

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

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

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

+2

Мне нравятся незафиксированные исключения, поэтому я могу печатать на консоль, не вылавливая 4 разных исключения. Одна строка становится 30 – Kon

+0

Вы должны зайти в детали. – chenrui

+1

Как вы сами говорите, в этом вопросе есть множество аргументов по всему Интернету. В то время как Роберт С Мартин заявляет, что «дебаты закончились», вы должны использовать непроверенные исключения, я так долго соглашался, пока меня не укусили и не застали врасплох, и не поймали исключения. Код продукта просто разбился. Поэтому я думаю, что это все еще хороший вопрос, но ответы - это все, не в последнюю очередь: http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html – Harald

ответ

5

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

  • использования проверяемых исключений для исключительных условий, которые должны быть обработаны тем, что вы считаете часть логики приложения, например: пользователь вводит в не существующем имени пользователя для входа в систему пользователь попытался сохранить и элемент за пределы, допустимые для ее подписки, и т. д. Таким образом, клиент кода, который обнаруживает исключительное условие, вынужден хотя бы признать тот факт, что условие может встречаются и, надеюсь, будут обрабатывать его наиболее подходящим способом.
  • использовать непроверенные исключения, чтобы свалиться рано и шумно которые вы не можете восстановить с помощью логики приложения, например: ваша функция получает неправильные параметры в качестве аргументов: звучит как идеальный сценарий, чтобы вызвать «незаконное исключение аргумента», что является исключением во время выполнения в большинстве программ Языки там
+0

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

1

Проверенные исключения выглядят великолепно, но на практике они просто не исправляют проблемы, которые они предназначены для исправления (подробнее здесь https://arpytoth.com/2016/04/08/the-problem-with-checked-exceptions/).

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

 Смежные вопросы

  • Нет связанных вопросов^_^