Как получить сообщение в переменной, если страница содержит ошибку? - PullRequest
2 голосов
/ 09 июля 2010

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

Ответы [ 2 ]

4 голосов
/ 09 июля 2010

Есть несколько способов сделать это. Один из них - настроить собственный обработчик ошибок . PHP будет перехватывать большинство ошибок, возникающих во время выполнения скрипта, и затем передавать их в ваш пользовательский обработчик. Что вы делаете внутри обработчика, зависит от вас. Вы можете записать в журнал , а затем перенаправить в другое место или куда хотите.

Если вы говорите о Исключениях , то оберните код, который может разбиться на блоки try / catch. Если возникает ошибка, обработайте исключение блока catch. То, что вы положили туда, снова зависит от вас.

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

1 голос
/ 09 июля 2010

Вы также можете рассмотреть возможность использования блока try {} catch {} и записи исключений в журнал ошибок в части catch {}. Как это:

try {

    $db = new MyDb('127.0.0.1', 'root', 'root');
    if (false === $db) {
        throw new Exception ('Could not connect to the database.');
    }

    $row = $db->getTable('table_name')->getRowByColumn('id', $_GET['id']);
    if (null === $row) {
        throw new Exception ('Row with id ' . $_GET['id'] . ' not found.')
    }

    // and so on

} catch (Exception $e) {
    $fp = fopen('logs/error.txt', 'w');
    fwrite($fp, date('l jS \of F Y h:i:s A') . ': ' . $e->getMessage() . "\n");
    fclose($fp);
}

Вы поняли.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...