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

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
Иногда возникает, иногда нет, смотря с какова браузера зайду..
 

LONGMAN

Dark Side of the Moon..
Отключил ексепшени, всё работает, даже нотайсы не выводятся

-~{}~ 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() а он деструктор и видима сам автоматом вызывается когда закончивается сценарий.. Но ошибку всёравно странно выдавал, по этому не смог раньше найти
 

x-yuri

Новичок
просто в деструкторах не должны возникать исключения - а у тебя похоже возникали
 

x-yuri

Новичок
смотрел. В деструкторе вызывается Close и похоже на то, что второй вызов mysql_close возвращает FALSE => генерируется исключение. А исключения в деструкторе...
 

LONGMAN

Dark Side of the Moon..
Значит если явно не вызвать close, всё будет в порядке?
 

x-yuri

Новичок
ты понял, почему ты сообщение об ошибке свое получал?
 

x-yuri

Новичок
а почему такое странное сообщение на 2 вызова mysql_close? Ведь следующий код такого собощения не вызывает?
PHP:
$link = mysql_connect(...);
mysql_close($link);
mysql_close($link);
 

cDLEON

Онанист РНРСlub
А чё в код посмотреть ни как? :(
Там сам класс ругается экзепшином.
Указатели на результ и на саму бд уже закрыты. Удалены.
А он повторно пытается их закрыть - получает фолс и генерирует исключение.
 

dimagolov

Новичок
а зачем вообще делать mysql_close в деструкторе? ну когда это делается руками и явно то ладно, но если не сделать, то ресурс по логике издохнет сам при окончании скрипта. или нет и соединение будет висеть на сервере пока сервер не закроет его по timeout?

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

п.п.с. допускать исключения в деструкторе нельзя само собой, меня сама необходимость явно делать mysql_close больше интересует.
 

LONGMAN

Dark Side of the Moon..
x-yuri
Может второй раз вызывался mysql_free_result() и он возврашал false?

-~{}~ 14.03.09 00:37:

Сейчас почитал ваши коментарий.. Я вот не понимаю в чём плюсь ексепшенов? Ведь ошибку и так выдаёт если на пример не законнектится с базой? Почитал в мануале но всёравно думаю зачем нам ексепшени
 

cDLEON

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

Сейчас почитал ваши коментарий.. Я вот не понимаю в чём плюсь ексепшенов? Ведь ошибку и так выдаёт если на пример не законнектится с базой? Почитал в мануале но всёравно думаю зачем нам ексепшени
Экзепшны нужны для того, что бы была возможность обработать и вывести их в нужном для тебя месте.
И дальнейшая обработка алгоритма не шла.
Т.е. выкинул экзепшн где-нибудь внутри модуля - получил снаружи, и вывел в читабельном виде. Типа фатал еррор - страница не доступна - вот вам ошибка.
 

LONGMAN

Dark Side of the Moon..
cDLEON
Спасибо большое. Сейчась понятно :) В этом классе нету ошыбки? Можно его использовать под большой нагрузки на БД?
 

x-yuri

Новичок
Может второй раз вызывался mysql_free_result() и он возврашал false?
LONGMAN если ты до сих пор не понял, откуда взялось сообщение об ошибке, то http://phpfaq.ru/debug тебе в помощь. Собственно, с этого стоило начать, может даже в форум писать не пришлось бы

Можно его использовать под большой нагрузки на БД?
а ты уже столкнулся с такой проблемой?
что же касается использования вообще: а почему ты его используешь? Чем он для тебя лучше, чем mysql extension?
 

LONGMAN

Dark Side of the Moon..
x-yuri
На phpfaq.ru я все статьи прочитал, но видима этот не так внимательно :) Нет, с такой проблемой ещё не сталкнулся, т.к. скрипт ещё в этапе тестирования.. Если честно я этот класс чуть переделал и использую только для просчёта количество запросов БД на странице. И для дебага. Вот сейчас соберяюсь сделать просчёт времени выпольнения этих запросов.
 
Сверху