Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
PHP Поиск
Обработка ошибочных ситуаций в PHP
"Если человек может сделать ошибку, он ее сделает. Если же вы полагаете, что ошибку в данной ситуации совершить невозможно, то вы ошибаетесь".
В PHP все виды ошибок и предупреждений разбиты на несколько категорий:
Константа | Описание | ||||||||||||||||||||||
E_ALLВсе типы ошибок
| E_ERROR | Фатальная ошибка на этапе исполнения
| E_WARNING | Предупреждение на этапе исполнения (нефатальная ошибка)
| E_PARSE | Ошибка синтаксиса
| E_NOTICE | Замечание на этапе исполнения (менее серьезное, чем предупреждение)
| E_CORE_ERROR | Фатальная ошибка на этапе инициализации PHP-машины
| E_CORE_WARNING | Предупреждение на этапе инициализации PHP-машины (нефатальная ошибка)
| E_COMPILE_ERROR | Фатальная ошибка на этапе компиляции
| E_COMPILE_WARNING | Предупреждение на этапе компиляции (нефатальная ошибка)
| E_USER_ERROR | Генерируемое пользователем сообщение об ошибке
| E_USER_WARNING | Генерируемое пользователем предупреждение
| E_USER_NOTICE | Генерируемое пользователем замечание
| |
Стандартное значение режима генерации сообщений об ошибках равно E_ALL & ~E_NOTICE, что соответствует выводу всех сообщений, не относящихся к категории E_NOTICE.
Это значение может быть изменено
- в инициализационном файле php.ini с помощью директивы error_reporting;
- в конфигурационном файле Apachehttpd.conf с помощью директивы php_error_reporting;
- во время выполнения программы с помощью функции error_reporting().
Функция настройки системного журнала error_reporting() устанавливает уровень выводимых соообщений об ошибках. Этой функции передаются константы, описанные выше.
Обработка исключений (exception)
Обработать возникающие исключения можно с помощью конструкции:
try{
// код, который может выбросить исключение
}catch(Exception $ex){ //$ex - экземпляр класса Exception или его наследника
echo 'Исключение: ' . $ex->getMessage();
}
Методы исключений
- getMessage() – получает сообщение исключения;
- getCode() – возвращает числовой код, который представляет исключение;
- getFile() – возвращает файл, в котором произошло исключение;
- getLine() – возвращает номер строки в файле, где произошло исключение;
- getTrace() – возвращает массив backtrace() до возникновения исключения;
- getPrevious() – возвращает исключение, произошедшее перед текущим, если оно было;
- getTraceAsString() – возвращает массив backtrace() исключения в виде строки;
- __toString() – возвращает все исключение в виде строки. Данную функцию можно переписать.
PHP позволяет использовать свой обработчик исключений. Для этого необходимо объявить собственную функцию обработки и зарегистрировать её при помощи функции set_exception_handler().
function special_handler($exception) {
echo "log: " . $exception->getMessage() . "\n";
}
set_exception_handler('special_handler');
// имитируем исключение
throw new Exception('Пример исключения');
После этого все возникающие исключения, не обрамлённые конструкцией try...catch, будут передаваться в объявленную вами функцию. Например, можно изменить функцию, чтобы она писала все исключения в файл и выдавала пользователю в браузер "красивое" сообщение об ошибке сервера:
function special_handler($exception) {
// добавляем описание исключения в лог-файл
$file = fopen("logfile.log", "a+");
fwrite($file, $exception->getMessage() . "\n");
fclose($file);
// выводим пользовалелю понятное сообщение
echo "Обнаружена ошибка сервера. Попробуйте ".
"войти позже. Приносим свои извинения.";
}
Эта функция очень полезна в процессе отладки скриптов непосредственно на сервере.
Функции, применяемые для обработки ошибок
- connection_aborted() - возвращает значение true при отключении клиента. Обычно это происходит в результате щелчка на кнопке "Остановить" ("Stop") в окне пользовательского браузера.
- connection_timeout() - возвращает значение true в случае тайм-аута сценария.
- defined() - возвращает значение true, если заданный аргумент является существующей именованной константой.
- die() - выводит сообщение и прекращает выполнение сценария.
if ( !file_exists( "aaa.php" ) ) die "Файл aaa.php не найден!";
- eval() - выполняет строку как PHP-код. Строка должна соответствовать обычным требованиям к PHP-коду. Все переменные, созданные в этом коде, после выполнения функции продолжают существовать в основном коде.
- exit() - прекращает выполнение сценария.
- func_get_args() - возвращает массив аргументов текущей функции пользователя. Базовое значние счетчика массива - нуль. При вызове вне рамок функции пользователя генерируется предупреждение.
- func_num_args() - возвращает количество аргументов текущей функции пользователя. Базовое значние счетчика массива - нуль. При вызове вне рамок функции пользователя генерируется предупреждение.
- function_exists() - возвращает значение true, если заданный аргумент - определенная функция.
- extension_loaded() - возвращает значение true, если загружено расширение с именем, заданным параметром.
- phpinfo() - выводит сведения о текущем состоянии PHP.
- phpversion() - возвращает версию выполняемой в данный момент программы синтаксического анализа PHP. Например, 4.3.0RC2.
- php_logo_guid() - возвращает глобальный идентификатор регистрационных данных (logo).
- php_sapi_name() - возвращает тип интерфейса, обеспечивающего взаимодействие Web-сервера и PHP. Например, cgi или apache.
- set_time_limit() - устанавливает количество секунд допустимой продолжительности выполнения сценария. По умолчанию ограничение составляет 30 секунд. Если парамер функции имеет нулевое значение, то ограничение по времени отсутствует. Если PHP выполняется в безопасном режиме, функция set_time_limit() не дает эффекта.
Читать дальше: Дополнительные возможности PHP.
Смотрите также Отладка PHP программ.
.
Прокомментировать/Отблагодарить
Популярное:
- Анализ сайта
- Проверка email
- Чей IP-адрес?
- Чей домен?
- Где телефон?
- Генератор Sitemap
- Примеры Ajax
- Примеры PHP
- Примеры Javascript
- Примеры HTML, CSS
- Бесплатные прокси
- GEO-сервисы
- Сайт в ТОП (SEO)
- Полезные ссылки
- Генератор Robots.txt
Содержание:
- HTML
- Что такое HTML
- <!DOCTYPE>
- Мета теги в <head>
- Тег <base>
- Текст в html
- HTML списки
- Ссылки
- Картинки на сайте
- Таблицы
- Фреймы
- Формы
- DHTML
- Музыка
- Видео
- Карты изображений
- SVG карты
- Графика в HTML
- SSI .shtml
- Таблица цветов RGB
- Правильное
сочетание цветов - Таблица
«безопасных»
цветов - Таблица символов
- Примеры HTML, CSS
- CSS
- JavaScript
- PHP + MySQL
- Введение в PHP
- Основы языка
- Использование
массивов - $_server
- Создание функций
- Строки
- Функции работы
со строками - Объектное
программирование - Формы
- Файлы
- Загрузка файлов
на сервер - MySQL
- Cookie
- htaccess
- Безопасность
- Сессии
- Отправка почты
- Кэширование
- Дата, время
- Математические
функции - Дополнительные
возможности - Регулярные
выражения - Библиотека Curl
- IMAP, POP3, NNTP
- Оптимизация
- Примеры скриптов
- XML + XSLT
- AJAX
- Графика CorelDRAW
- SEO
- Сервисы
- Разное
- Движки сайтов (CMS)
- Регистрация
доменов и хостинг - Заработок для
web-мастеров - Хостинг
- Настройка DNS
- ADSL
- RSS
- ActiveX и HTML
- Паролирование
страницы - HTTP коды
- HTTP протокол
- HTTP заголовки
- Прячем ссылки
- ☠ Черный список
сайтов - ☭ Заработок
в интернете - Термины и
определения - Продажа доменов
- ✉ Настройки
Яндекс-почты - Кнопки социалок
- ☎ Настроки SIP
в телефоне - Создание
поискового плугина - Сервис
коротких ссылок - Telegram: бот, ссылки
- Шаблоны сайтов
- Друзья
- Задания к л/р
- Примеры
зачетных задач
- Статьи, обзоры
- Новости