Это хорошая практика кодирования, чтобы бросить в блоке catch? - PullRequest
0 голосов
/ 26 апреля 2019

Я выполняю некоторые операции, связанные с обслуживанием. действителен приведенный ниже фрагмент?

try {
          //some code here
    } catch (ServiceException e) {
                throw new ServiceException("Error!!!");
   }

Я ловлю ServiceException и выкидываю то же исключение. Это хорошая практика ???

Ответы [ 3 ]

0 голосов
/ 26 апреля 2019

не очень хорошая практика.потому что трудно найти причину проблемы

0 голосов
/ 26 апреля 2019

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

  1. Есть липричина, по которой я должен поймать ServiceException e , а затем выбросить еще один того же типа с меньшим количеством информации в нем.Вы создали новый с меньшим количеством информации.Строка «Ошибка !!!» определенно меньше, чем вы, вероятно, можете получить из оригинальной e.getMessage () или e.getCause и т. Д. (При условии ServiceException e , возможно, оборачивает другое низкоуровневое исключение, документируйте себя немного об обтекании исключений).
  2. Будет ли некоторый вызывающий код перехватывать ServiceException и действовать на него?Проверьте немного вашу иерархию вызовов и найдите место, где вы должны действовать по ServiceException .Остановитесь и начните спрашивать снова Имеет ли какое-то значение, если здесь я ловлю ServiceException с "Ошибка !!!" в нем или оригинальным ServiceException e .
  3. Я выкидываю и ловлю исключения в своем коде. Должен ли я как-то отслеживать позже, что здесь произошло?Если да, то я бы также регистрировал некоторые ошибки, предупреждения или информацию о том, что произошло, в зависимости от сценария.Таким образом, вы упростите процесс устранения неполадок для тех, кто позже просматривает журналы вашего приложения.Я также прочитал бы немного о глотании исключений и почему это плохо.
0 голосов
/ 26 апреля 2019

В части catch вы фактически перехватываете основное исключение, которое произошло во время кода ... а затем выкидываете исключение, специально предназначенное для чтения пользователем, из этого ... Это хорошая практика.

...