Как разрешить "Определить и выбросить выделенное исключение вместо использования общего". в моем коде

String replaceSubString(String orignal, int startIndex, int endIndex, String replaceWith){
 StringBuffer buffer = new StringBuffer(orignal);
 if ((action.getEndindex() - action.getStartindex()) < 0) {
 if (replaceWith.length() > (startIndex - endIndex)) {
 throw new RuntimeException("Replace string lenght not same as difference of start & end index.");
 }
 buffer = buffer.replace(endIndex, startIndex, replaceWith);
 } else {
 if (replaceWith.length() > (endIndex - startIndex)) {
 throw new RuntimeException("Replace string lenght not same as difference of start & end index.");
 }
 buffer = buffer.replace(startIndex, endIndex, replaceWith);
 }
 return buffer.toString();
}

Привет, Это мой код, в то время как я проверяю его на качество кода, он показывает "Определить и выбросить выделенное исключение вместо использования общего", что я должен сделать для решения этой проблемы? Может ли кто-нибудь помочь мне с этим.

3 ответа

Вы бросаете RuntimeException, который в значительной степени похож на общий. Это говорит вам использовать что-то, что более точно говорит, что пошло не так, определяя ваш собственный StringLengthException (или все, что вы хотите назвать), и вместо этого бросаете это.


Вместо того, чтобы бросать RuntimeException, что является довольно общим, вы можете выбросить IllegalArgumentException (поскольку вы бросаете свое исключение, когда ваш метод получает незаконные аргументы) или IndexOutOfBoundsException (поскольку вы бросаете свое исключение, когда ваш метод получает индексы которые находятся за пределами допустимых границ).


Качество кода просит вас определить собственное исключение вместо использования предопределенного класса исключения java.

Итак, вы должны объявить новый класс (например, ReplaceStringLengthException), унаследованный от RuntimeException, или вы можете выбросить любое исключение, полученное из RuntimeException.

licensed under cc by-sa 3.0 with attribution.