Осуществите рефакторинг обработку исключений

Хорошо я грешил, я написал слишком много кода как это

try {
   // my code
} catch (Exception ex) {
   // doesn't matter
}

Теперь я иду в очистку/осуществлять рефакторинг это.

Я использую NB 6.7, и завершение кода хорошо работает на первой записи, добавлении всех Типов исключительной ситуации, и т.д. После того как я сделал вышеупомянутый код, NB не дают больше справки.

Вы знаете способ повторить взгляд NB для всех Типов исключительной ситуации и внести предложение по обработке их и действительно кодируете завершение снова?

5
задан PeterMmm 15 January 2010 в 14:07
поделиться

4 ответа

Когда вы просите предложение о том, как справиться с исключениями ...

Не существует общепринятого способа справиться с ними Отказ В противном случае вы ставите, язык Java будет неявно таким поведением.

  • Исключения не являются ограничением низкого уровня, которым необходимо иметь дело, пока компилятор достаточно умнее.
  • Исключения являются языковой конструкцией высокого уровня, используемый для выражения семантического «Что-то исключительное произошедшее, чье лечение вы не хотите смешивать с помощью обычного кода; вы предпочитаете его обращаться в конкретных кодах».

Исключения существуют в двух формах, по конструкции:

  • проверенные исключения должны быть сделаны явными в каждом методе, который может их бросить.
  • Неверные исключения (подклассы runtimeexception или ошибок) обычно неявны.

На каждом уровне кода (метод или блок) код должен выбрать, что делать, в случае любого исключения (кроме непроверенных исключений, которые могут вообще опускать лечение). Это выбор ответственности, который варьируется, нет никаких решений, действительных для всех случаев:

  • . Процесс : поймать его и полностью обработать его (звонки, как правило, не знают что-то). Текущий метод должен иметь ответственность. Регистрация стопки-трассировки для разработчика может быть полезно.
  • Шаг : Поймайте его, сделайте шаг обработки, связанной с локальным кодом, и образуется его (или обратное другое исключение с оригинальным в качестве причины).
  • Игнорировать : Просто дайте ему на ответственность за вызовами.

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


Обычно вы считаете исключениями в вашей архитектуре и принять некоторые дизайнерские решения. Некоторые примеры (смешанные уникальными способами):

  • Выберите один процесс, используя один слой, все исключения, брошенные в нижних слоях (например, транзакционные сервисы): регистрация для разработчика, позиционирование некоторой глобальной информации для пользователя ...
  • Некоторые исключения поднимаются вверх по нескольким вызовам метода, пока вы не приедете в код, в котором он имеет смысл обрабатывать его (например, в зависимости от ваших исключений, вы можете повторить полную работу или уведомлять пользователя ...)
  • .
1
ответ дан 14 December 2019 в 01:08
поделиться

PMD определяет все эти места, в которых вы пустые блоки блоки (PMD действительно намного больше). У него есть интеграция NetBeans, поэтому попробуйте.

После выявления всех мест с пустыми CALL Блоки, вам придется рассмотреть каждый сам по себе:

  • иногда просто регистрируют сообщение
  • иногда реструктурируют близлежащий код. Я Если вы ловите NullPointexception , добавьте NULL вместо этого.
  • Иногда вам придется рассмотреть измерение (и объявлять проверенные) исключения.
4
ответ дан 14 December 2019 в 01:08
поделиться

Проблема в том, что ваш улов все обработчик «обрабатывает» все исключения, поэтому нет необходимости в NetBeans показывать все больше намеков.

Если ваши обработчики исключений уже пусты, и вы планируете в любом случае, вы можете просто временно удалить их.

Совет: Автоматический формат Ваш код, поиск Попробуйте и используйте кронштейн, подчеркивая, чтобы найти соответствие Blocks . Затем удалите весь код обработки.

После этого NetBeans снова предложит различные действия для обработки возможных исключений.

PS: Будьте осторожны, обрабатывать по умолчанию NetBeans (I.E. Просто ведение журнала) не всегда лучший выбор.

3
ответ дан 14 December 2019 в 01:08
поделиться

Я просто могу предоставить подход Eclipse и надеюсь, что он несколько поступил с NetBeans:

  1. Удалить операторы TRY / CALL -> Eclipse покажет ошибки компилятора
  2. Использование Eclipse Быстрый совет к рефактору правильные утверждения Thrue / Catch (или броска)

Вы можете сохранить свой существующий код обработки исключений, чтобы вставить его после рефакторинга.

Редактировать

Том был очень хороший комментарий относительно Runtimeexception. Таким образом, процедура лучше выглядеть так:

  1. Скопируйте существующий пункт улова и вставить в блокнот / текстовый редактор
  2. Удалить операторы Thrue / Catch -> Eclipse покажет ошибки компилятора
  3. Использовать быстрый наконечник Eclipse к рефактору Правильная попытка PROT / CALL (или RUSH)
  4. вставка хранимых пунктов доловов в конце последовательности операторов CALL

Это сохранит вашу обработку исключения runtimeexceptions (и подтипы!).

Итак, из

try {
   Integer.parseInt("Force a RuntimeException");
   myInputStream.close();
} catch (Exception oops) {
   // catch both IOException and NumberFormatException
}

вы переходите в

try {
   Integer.parseInt("Force a RuntimeException");
   myInputStream.close();
} catch (IOException oops) {
   // catch IOException
} catch (Exception oops) {
   // catch NumberFormatException
}

(хотя вы могли бы вручную заменить исключение по NumberFormatexception в этом случае, но это просто пример)

1
ответ дан 14 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: