простой пример появления логической ошибки:
пишем код:
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 рублей автору. Спасибо!
Комментариев нет:
Отправить комментарий