Непонятная ошибка

Тема в разделе "PHP", создана пользователем Leonas, 22 апр 2011.

Модераторы: latteo
  1. Leonas

    Leonas Создатель

    Регистр.:
    22 сен 2010
    Сообщения:
    23
    Симпатии:
    0
    Есть система построенная на обьектах, развитвленная структура. главный обьект создает в нутри себя обьекты поменьше и управляет ими. код работает нормально, выдает все что нужно, но в самом низу страницы появляется надоедливое сообщение об ошибке
    "Fatal error: Exception thrown without a stack frame in Unknown on line 0"
    какая линия "0"? такого кабы нету. что искать, почему выдается данная ошибка?
    немогу понять откуда и почему может возникнуть данная ошибка?
     
  2. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    ищи в callback фунциях, деструткторах классов и в функциях зарегистрированых с помощью register_shutdown_function
     
    Leonas нравится это.
  3. Leonas

    Leonas Создатель

    Регистр.:
    22 сен 2010
    Сообщения:
    23
    Симпатии:
    0
    Да, в некоторых классах используются диструкторы, но в них ошибок нет. callback, register_shutdown_function неиспользуются.
     
  4. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    ставь брейкпоинты и делай трассировку, экстрасенсы бесплатно не работают ;)
     
  5. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    если деструкторов не много, поочереди убирай, и смотри когда пропадет ошибка, если не поможет - делай как написал saen
     
  6. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    199
    Симпатии:
    55
    PHP:
    set_error_handler('Errorhandler'); 
    set_exception_handler('Errorhandler');

    function 
    Errorhandler($type,$err,$file,$line)
    {
     
    в функцию передадутся
     $type
    тип ошибки (код)
     
    $err сообщение 
     $file 
    файл с ошибкой
     $line 
    строка в файле 
     
    }
    Я эти данныепишу в лог, после можно просмотреть. Сюда попадут все Warning Exceptiоn и Error
     
  7. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    какая разница куда выводить ошибку, если обработчик ошибок не видит где произошла ошибка? В функцию передастся тоже самое. Темболее там Fatal error ошибка.
     
  8. jabjab

    jabjab Создатель

    Регистр.:
    27 окт 2010
    Сообщения:
    42
    Симпатии:
    12
    Есть ли кеширование в файл? Если да, то достаточно ли прав для записи кеш-файла?
     
  9. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    причем тут кеш вообще? или ты не умеешь гуглить дальше первой позиции в выдаче?:D
     
  10. Leonas

    Leonas Создатель

    Регистр.:
    22 сен 2010
    Сообщения:
    23
    Симпатии:
    0
    Вобщем ошибку я нашел, спосибо за подсказки.
    непонятна природа возникновения такой ошибки.
    вот код:

    PHP:
    <?php
    header
    ('Content-Type: text/html; charset=utf-8');
    error_reporting(E_ALL);

    class 
    my1 {
        
      public function 
    add() {
        
    $this->f1 = isset($this->f1) ?  $this->f1+1;
      }
      
      public function 
    __destruct() {
        if (isset(
    $this->f1)) 
          throw new 
    Exception('переменная иниацилизированна');//тут причина
      
    }
      
    }

    class 
    my2 {
      public function 
    __construct() {
        
    $this->my1 = new my1();
      }
      
      public function 
    printt() {
        
    $this->my1->add();
        echo @
    $this->my1->f1;
      }
    }


    try {
      
      
    $c = new my2();
      
    $c->printt();
    }
    catch (
    Exception $e) {
      echo 
    $e->getMessage();
    }
      
    exit;
    если логически рассудить то в коде нет ошибок, код отрабатывает как нада, почему вызов генерации исключения выдает ошибку? (прошу сильно непинать, непонятна суть ошибки, код составил специально чтобы показать возникновение моей ошибки)