2015-10-23 2 views
-1

Я не собираюсь обрабатывать ошибки в php, как во время выполнения, так и во время компиляции. Я хочу управлять всеми типами ошибок.Как обрабатывать ошибку или исключение в php?

Уведомление, Предупреждение, Ошибка синтаксического анализа, Fatal Error

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

// set to the user defined error handler 
$old_error_handler = set_error_handler("myErrorHandler"); 

Короче: Я ищу правильно обрабатывать ошибки, если я ввожу неправильно объявление переменной типа d вместо $d, или, если я забыл точку с запятой в строка, или если я получаю ошибку MySQL.

+0

Какое исследование вы сделали или код, что вы написали? – Script47

+0

@Machavity, я не согласен с тем, что это дубликат этого - этот вопрос, по-видимому, касается различий между ошибками и исключениями. Этот вопрос задает вопрос об обработке обоих типов проблем. Я бы сказал, что это связано с этим. – HPierce

ответ

0

Вы хотите отлаживать свои ошибки, не подавляя их. Код на запись составляет 25% кодирования и 75% отладки (допустимо). Причина, которую вы даете для подавления ошибок, - это просто плохое написание кода с самого начала.

2

Вы должны установить как обработчик ошибок, так и обработчик исключений. Когда оба, ошибка и неперехваченные исключения выбрасываются вы увидите, отображаются оба сообщения:

<?php 
function exception_handler($exception) { 
    echo "Custom exception message: " . $exception->getMessage() . "\n"; 
} 

function error_handler($errno, $errstr, $errfile, $errline) { 
    echo "Custom error message: " . $errstr . "\n"; 
} 

set_exception_handler('exception_handler'); 
set_error_handler('error_handler'); 

//This exception will *not* cause exception_handler() to execute - 
//we have addressed this exception with catch. 
try{ 
    throw new Exception('I will be caught!'); 
} catch (Exception $e) { 
    echo "Caught an exception\n"; 
} 

//Unmanged errors 
trigger_error("I'm an error!"); 
throw new Exception("I'm an uncaught exception!"); 
?> 

выходов:

перехвачен исключением

Выборочного сообщения об ошибке: Я ошибка!

Пользовательское сообщение об исключении: я - неперехваченное исключение!

Вы можете (и должны) по-прежнему использовать try{} ... catch(){} для решения ошибок, как они приходят, но эти ошибки не будут обрабатываться обработчиком исключения после того, как скрипт завершит выполнение.

Дополнительная информация о exception handlers.

Дополнительная информация о error handlers.

Смежные вопросы