простой пример появления логической ошибки:
пишем код:
if (cookies.length != 0) {
for (int i = 0; i < cookies.length; i++) {
isAuth = isAuth || cookies[i].getName().equalsIgnoreCase(paramCooikeAuth);
break;
}
}
логическая ошибка - наличие break без условия прерывания. IDE (в данном случае, Eclipse) предлагает удалить "i++", как не требующуюся в цикле (всё равно не будет использована). "Слепо" соглашаемся
Чуть позже замечаем ошибку про break и добавляем условие:
if (cookies.length != 0) {
for (int i = 0; i < cookies.length;) {
isAuth = isAuth || cookies[i].getName().equalsIgnoreCase(paramCooikeAuth);
if (isAuth) break;
}
}
Но следом получаем вечный цикл for, так как отсутствует счетчик, удалённый ранее!
Следствие: прежде чем согласиться на то, что предлагает IDE - подумайте, ПОЧЕМУ он это предлагает, ведь может так оказаться, что ошибка-то совсем не в том месте, где её "видит" IDE!
UPD:
в конечном итоге код всё равно сократился до (см. ниже), но как говориться, "осадок остался" :)
if (cookies.length != 0) {
for (int i = 0; i < cookies.length; i++) {
if (isAuth = cookies[i].getName().equalsIgnoreCase(paramCooikeAuth)) break;
}
}
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
Комментариев нет:
Отправить комментарий