Определение запаха кода "ProbableBugException", паранойя или хорошая практика? - PullRequest
2 голосов
/ 21 мая 2009

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

Кроме того, при кодировании я иногда замечаю, что полагаюсь на определенные входные данные других модулей (моих собственных), чтобы иметь или не иметь определенные функции. Например, я мог бы ожидать, что строка будет в определенном формате и т. Д. В этих ситуациях я часто вставляю шаг проверки, хотя я сам контролирую код, который отправляет ввод.

В данный момент я работаю над довольно сложным продуктом, который я хочу быть очень надежным. Помимо всего прочего, я хочу, чтобы он собирал информацию из обнаруженных исключений и автоматически отправлял отчеты об ошибках. Для вышеупомянутых двух сценариев я поэтому определил (непроверенное) «ProbableBugException», которое говорит мне, что я допустил ошибку в коде, передающем входные данные.

Это а) глупо, б) параноидально или в) хорошая практика? Это будет субъективно, я выложу три вики-ответа, чтобы мы могли голосовать без искажения репов.

ETA : Спасибо Свенду за то, что он указал, что в Java есть утверждения, я этого не осознавал. Утверждения в значительной степени соответствуют моему вопросу, но я знал их только по Си и никогда там не использовал.

Ответы [ 4 ]

4 голосов
/ 21 мая 2009

Я думаю, что использование assert - это то, что вам действительно нужно («вероятно, ошибка»).

http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html

2 голосов
/ 21 мая 2009

Это глупо, потому что:

  • исключение должно быть гораздо более конкретным, как InvalidInputException
  • вам стоит подумать о входной стороне, скорее всего, шатко, если вы чувствуете, что вам нужно такое исключение
1 голос
/ 21 мая 2009

Это хорошая практика, потому что:

  • у вас может быть кодировка сотрудника на стороне ввода, и вы двое могли неправильно понять друг друга
  • если вы допустили ошибку, исправление становится тривиальным
  • в ситуациях, когда входная сторона является плагином какого-либо рода, она помогает разработчикам плагинов (которые могут быть внешними) доставить правильный ввод.
0 голосов
/ 21 мая 2009

Я всегда ожидаю неожиданного.

У меня часто такой код: ($ div никогда не будет 0 в моем коде)

if( $div != 0 ) {
   $var = $var2 / $div;
} else {
    /*
     * It should never happen
     */   
    throw Exception( 'relevant message' );
}

Я всегда защищаю себя от себя и других

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...