Fatal error: Exception thrown without a stack frame in Unknown on line 0

  • Автор темы Автор темы LONGMAN
  • Дата начала Дата начала

LONGMAN

Dark Side of the Moon..
Fatal error: Exception thrown without a stack frame in Unknown on line 0

Что за ошибка? Fatal error: Exception thrown without a stack frame in Unknown on line 0
Иногда возникает, иногда нет, смотря с какова браузера зайду..
 
Отключил ексепшени, всё работает, даже нотайсы не выводятся

-~{}~ 13.03.09 01:18:

dimagolov, я не пользуюсь set_exception_handler'ом, у меня в классе MySQL это возникает

-~{}~ 13.03.09 01:21:

В в этом классе http://www.naumovs.de/class.mysql/class.mysql.html

-~{}~ 13.03.09 01:40:

Исправил :-) В конце файла я явно вызывал $db->Close() а он деструктор и видима сам автоматом вызывается когда закончивается сценарий.. Но ошибку всёравно странно выдавал, по этому не смог раньше найти
 
просто в деструкторах не должны возникать исключения - а у тебя похоже возникали
 
смотрел. В деструкторе вызывается Close и похоже на то, что второй вызов mysql_close возвращает FALSE => генерируется исключение. А исключения в деструкторе...
 
а почему такое странное сообщение на 2 вызова mysql_close? Ведь следующий код такого собощения не вызывает?
PHP:
$link = mysql_connect(...);
mysql_close($link);
mysql_close($link);
 
А чё в код посмотреть ни как? :(
Там сам класс ругается экзепшином.
Указатели на результ и на саму бд уже закрыты. Удалены.
А он повторно пытается их закрыть - получает фолс и генерирует исключение.
 
а зачем вообще делать mysql_close в деструкторе? ну когда это делается руками и явно то ладно, но если не сделать, то ресурс по логике издохнет сам при окончании скрипта. или нет и соединение будет висеть на сервере пока сервер не закроет его по timeout?

п.с. вообще дурацкая логика кидать исключения на невозможность что-то закрыть. когда не смогли открыть или использовать там понятно - мы ожидаем осмысленный результат для дальнейшего использования и его отсутствие это плохо, надо сообщить. но когда мы что-то хотим закрыть, а оно уже закрыто, то мы должны просто порадоваться и сказать "а мы уже в дамках и нам делать нечего", так как нужный результат уже есть. а не строить из себя ребенка, у которого отобрали конфету "ой, мне не дали спустить унитаз, хных-хнык" :)

п.п.с. допускать исключения в деструкторе нельзя само собой, меня сама необходимость явно делать mysql_close больше интересует.
 
x-yuri
Может второй раз вызывался mysql_free_result() и он возврашал false?

-~{}~ 14.03.09 00:37:

Сейчас почитал ваши коментарий.. Я вот не понимаю в чём плюсь ексепшенов? Ведь ошибку и так выдаёт если на пример не законнектится с базой? Почитал в мануале но всёравно думаю зачем нам ексепшени
 
а зачем вообще делать mysql_close в деструкторе? ну когда это делается руками и явно то ладно, но если не сделать, то ресурс по логике издохнет сам при окончании скрипта. или нет и соединение будет висеть на сервере пока сервер не закроет его по timeout?
Во-первых в пхп деструктор вызывается сразу после того как на объект нет больше ссылок. Если программа расчитана на долгое время работы, то очистка этих вот подключений может произойти, когда ПыхПых вывалит свой длинный и толстый фатал о нехватке памяти.
Во-вторых - писал этот класс, наверняка СИ-программер :)
Оттуда привычка всё чистить и всё проверять...
ЗЫ. Вот не поверишь, на ПХП иногда и консольки пишут:) КОгда бюджет минимален ))
-~{}~ 14.03.09 00:59:

Сейчас почитал ваши коментарий.. Я вот не понимаю в чём плюсь ексепшенов? Ведь ошибку и так выдаёт если на пример не законнектится с базой? Почитал в мануале но всёравно думаю зачем нам ексепшени
Экзепшны нужны для того, что бы была возможность обработать и вывести их в нужном для тебя месте.
И дальнейшая обработка алгоритма не шла.
Т.е. выкинул экзепшн где-нибудь внутри модуля - получил снаружи, и вывел в читабельном виде. Типа фатал еррор - страница не доступна - вот вам ошибка.
 
cDLEON
Спасибо большое. Сейчась понятно :-) В этом классе нету ошыбки? Можно его использовать под большой нагрузки на БД?
 
Может второй раз вызывался mysql_free_result() и он возврашал false?
LONGMAN если ты до сих пор не понял, откуда взялось сообщение об ошибке, то http://phpfaq.ru/debug тебе в помощь. Собственно, с этого стоило начать, может даже в форум писать не пришлось бы

Можно его использовать под большой нагрузки на БД?
а ты уже столкнулся с такой проблемой?
что же касается использования вообще: а почему ты его используешь? Чем он для тебя лучше, чем mysql extension?
 
x-yuri
На phpfaq.ru я все статьи прочитал, но видима этот не так внимательно :-) Нет, с такой проблемой ещё не сталкнулся, т.к. скрипт ещё в этапе тестирования.. Если честно я этот класс чуть переделал и использую только для просчёта количество запросов БД на странице. И для дебага. Вот сейчас соберяюсь сделать просчёт времени выпольнения этих запросов.
 
Сверху