Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заставить PHP выбрасывать исключения вместо выведения предупреждений 
:(
    Опции темы
Royan
Дата 25.7.2007, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Это довольно просто. Разумеется вы можете легко расширить эту функцию, добавив условия для других классов ошибок.
Код

<?php
function error_handler($errorType, $message)
{
        if ($errorType == E_NOTICE) {
                throw new Exception( $message, $errorType);
        }
}

set_error_handler('error_handler');

// Throws a notice
echo $new;
?>


Это сообщение отредактировал(а) Royan - 25.7.2007, 09:49


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
SamDark
Дата 6.8.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 0
Всего: 38



Следует отметить, что не все ошибки могут быть обработаны...


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Fally
Дата 7.8.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

Репутация: нет
Всего: 4



Кроме FATAL, PARSE и ... (не помню (: )


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
redlinesoft
Дата 17.8.2007, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.8.2005

Репутация: нет
Всего: нет



А конструкция try-catch не катит?
PM MAIL   Вверх
sergejzr
Дата 29.8.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



А как обработать все ошибки? (Вообще, меня интересует логгинг ошивок в файл).
И вопрос 2, вышеописанным способом ловятся даже ошибки, спрятянные оператором @. Как бы их отфильтровать?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sTa1kEr
Дата 29.8.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(sergejzr @  29.8.2007,  14:17 Найти цитируемый пост)
А как обработать все ошибки?

Фатальные ошибки можно обработать методом Котерова http://dklab.ru/lib/PHP_CodeFilter/ . Синтаксические... только если перед инклюдом отдельно проверять синтаксис. К примеру через отдельный вызов интерпретатора
Код

$out = `php -l $fileName`;
// Далее парсим $out на наличие ошибок


Цитата(sergejzr @  29.8.2007,  14:17 Найти цитируемый пост)
Вообще, меня интересует логгинг ошивок в файл

А чем не устраивает стандартные логи ошибок PHP?

Цитата(sergejzr @  29.8.2007,  14:17 Найти цитируемый пост)
И вопрос 2, вышеописанным способом ловятся даже ошибки, спрятянные оператором @. Как бы их отфильтровать? 

Способ только один - проверять значение настройки "error_reporting". При возникновении ошибки в выражении с @, это значение всегда будет равняться 0.
Код

function error_handler($errorType, $message)
{
   if (ini_get("error_reporting") == 0) return;
   // ...
}

Или же еще лучше сверять его с текущим типом ошибки
Код

function error_handler($errorType, $message)
{
   if ((ini_get("error_reporting") & $errorType) != $errorType) return;
   // ...
}


Это сообщение отредактировал(а) sTa1kEr - 29.8.2007, 15:01
PM MAIL   Вверх
sergejzr
Дата 29.8.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



понятно, огромное спасибо! А про стандартные логи я если честно даже не знал, но это не подойдёт, потому что нужны спецнастройки ПХП.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0926 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.