странная работа функции set_error_handler

странная работа функции set_error_handler

собственно вот код...
PHP:
<?php
    function ShowError( $err_num, $msg, $file, $line )
    {
        echo 'Определили ошибку: '.$msg;
    }   
    set_error_handler( 'ShowError', E_ALL );

    class a {
	}
    
	$test = new a;
	
    $test->eee;
    $test->eee();
?>
может я что-то не понимаю, но почему-то ошибка о несуществующем свойстве класса нормально передается на обработку, а метода - нет...

~~~~~

хм....
по-моему начинаю понимать... видимо для пхп вызов несуществующего метода - это ошибка ~= синтаксической, т.к. после этого он прекращает работу скрипта...
 

kvf77

Red Devil
Loshadka

фатальные ошибки перехватить НЕЛЬЗЯ, соответственно все работает правильно
 

kvf77

Red Devil
Фанат

ну он как раз этого не утверждает - он описывает метод, который позволяет выполнить какой-то код до того как вывалится ошибка, что не является по сути ее перехватом
 
Фанат

Котеров описывает, что вот таким методом можно перехватить сообщение о любой ошибке.
Но у меня, почему-то, выдает сообщение, что класс PHP_Exceptionizer - не существует :( ( php 5.0.5 )
PHP:
<?php

    class a {
	}

	
    $error = new PHP_Exceptionizer(E_ALL);
    try 
    {
    	$test = new a;
        $test->eee();
        $test->eee;
    }
    catch( E_WARNING $e )
    {
        echo 'Произошла ошибка: <b>'.$e.'</b><br>';
    }
    unset($error);

?>
 

Profic

just Profic (PHP5 BetaTeam)
Loshadka
Я так подозреваю, что в оригинале у Котерова не было слова "любой".
Для альтернативо одаренных повторяю:
фатальные ошибки перехватить НЕЛЬЗЯ, соответственно все работает правильно
Про то, что код можно выполнить до того, как вывалится сообщение об ошибке, смотреть наблу про JsHttpRequest.
 
фатальные ошибки перехватить НЕЛЬЗЯ
логично...
насколько я понимаю, вызов несуществующего метода класса - как раз фатальная ошибка?
хм... а почему тогда обращение к несуществующему свойству - это не фатальная ошибка?
 

mani13

Новичок
Loshadka
почему вызов несуществующей функции -- фатальная ошибка, а обращение к несуществующей переменной или константе -- нет?
 

Profic

just Profic (PHP5 BetaTeam)
Loshadka
насколько я понимаю, вызов несуществующего метода класса - как раз фатальная ошибка?
Да.
а почему тогда обращение к несуществующему свойству - это не фатальная ошибка?
Спрашивайте разработчиков. Однако, это суть скриптовых языков.
 
Сверху