Ещё IThappens
Jul. 13th, 2009 06:09 pm#503: А тем, кто не поймет, он откусит ногу
18 января 2009, 09:00
Разрабатываем одну большую корпоративную систему - огромная база данных, большие нагрузки на сервера ну и веб-интерфейс, куда ж без него. Интерфейс этот пишется с использованием одной библиотечки, которая в свою очередь вовсю использует AJAX. Библиотека open-source, но как-то раз преподнесла совершенно неожиданный сюрприз.
Решил я ее обновить, скачал новую версию, пересобрал, залил - все вроде в порядке. Но при заходе на одну из страничек сервер стал тут же падать! Не поняв с первого раза, как стабильно работающее приложение может вдруг выкинуть такой фокус, стал внимательно изучать логи. И обнаружил там, о ужас, StackOverflowException! При этом, точно зная что рекурсию нигде не использую, порылся в своем коде пару минут, да и решил заглянуть в код библиотеки. А там увидел вот такую прелесть на месте того метода, который вызывал ошибку:
/**
* @return
* @see #getPage()
* @deprecated
*/
public int getPageIndex() {
return getPageIndex();
}
Вот, оказывается, как надо объявлять метод устаревшим, чтобы его впредь больше никогда не использовали!
18 января 2009, 09:00
Разрабатываем одну большую корпоративную систему - огромная база данных, большие нагрузки на сервера ну и веб-интерфейс, куда ж без него. Интерфейс этот пишется с использованием одной библиотечки, которая в свою очередь вовсю использует AJAX. Библиотека open-source, но как-то раз преподнесла совершенно неожиданный сюрприз.
Решил я ее обновить, скачал новую версию, пересобрал, залил - все вроде в порядке. Но при заходе на одну из страничек сервер стал тут же падать! Не поняв с первого раза, как стабильно работающее приложение может вдруг выкинуть такой фокус, стал внимательно изучать логи. И обнаружил там, о ужас, StackOverflowException! При этом, точно зная что рекурсию нигде не использую, порылся в своем коде пару минут, да и решил заглянуть в код библиотеки. А там увидел вот такую прелесть на месте того метода, который вызывал ошибку:
/**
* @return
* @see #getPage()
* @deprecated
*/
public int getPageIndex() {
return getPageIndex();
}
Вот, оказывается, как надо объявлять метод устаревшим, чтобы его впредь больше никогда не использовали!
no subject
Date: 2009-07-13 11:19 pm (UTC)почему не выдать нормальное сообщение об ошибке?
типа
fprintf(stderr,"%s:%d:getPageIndex has been removed\n",__FILE__,__LINE__);
abort();
no subject
Date: 2009-07-14 12:29 pm (UTC)Скотыпрограммисты шутют :-)no subject
Date: 2009-07-14 12:17 am (UTC)no subject
Date: 2009-07-14 02:09 am (UTC)I'm enjoying.