Обработка пользовательских исключений php
Я хочу обрабатывать исключения в моем PHP-приложении самостоятельно.
Когда я выбрасываю исключение, я хочу передать заголовок, который будет использоваться на странице ошибки.
Может кто-нибудь связать меня с хорошим руководством или написать четкое объяснение того, как на самом деле работает обработка исключений (например, как узнать, с каким типом исключения вы имеете дело, и т.д.).
Ответы
Ответ 1
Официальные документы - это хорошее место для начала - http://php.net/manual/en/language.exceptions.php.
Если это просто сообщение, которое вы хотите захватить, вы сделаете это в следующем:
try{
throw new Exception("This is your error message");
}catch(Exception $e){
print $e->getMessage();
}
Если вы хотите зафиксировать определенные ошибки, вы должны использовать:
try{
throw new SQLException("SQL error message");
}catch(SQLException $e){
print "SQL Error: ".$e->getMessage();
}catch(Exception $e){
print "Error: ".$e->getMessage();
}
Для записи - вам нужно определить SQLException
. Это можно сделать так же, как:
class SQLException extends Exception{
}
Для заголовка и сообщения вы должны расширить класс Exception
:
class CustomException extends Exception{
protected $title;
public function __construct($title, $message, $code = 0, Exception $previous = null) {
$this->title = $title;
parent::__construct($message, $code, $previous);
}
public function getTitle(){
return $this->title;
}
}
Вы можете вызвать это, используя:
try{
throw new CustomException("My Title", "My error message");
}catch(CustomException $e){
print $e->getTitle()."<br />".$e->getMessage();
}
Ответ 2
Во-первых, я бы рекомендовал взглянуть на соответствующую страницу руководства PHP, это отличное место для начала. Кроме того, вы можете взглянуть на страницу Расширение исключений - есть дополнительная информация о стандартном классе исключений и примере реализации пользовательских исключений.
Если вопрос заключается в том, как сделать какое-то конкретное действие, если было выбрано исключение конкретного типа, вам просто нужно указать тип исключения в инструкции catch:
try {
//do some actions, which may throw exception
} catch (MyException $e) {
// Specific exception - do something with it
// (access specific fields, if necessary)
} catch (Exception $e) {
// General exception - log exception details
// and show user some general error message
}
Ответ 3
Попробуйте это как первое, что есть на вашей php-странице.
Он фиксирует ошибки и исключения php.
function php_error($input, $msg = '', $file = '', $line = '', $context = '') {
if (error_reporting() == 0) return;
if (is_object($input)) {
echo "<strong>PHP EXCEPTION: </strong>";
h_print($input);
$title = 'PHP Exception';
$error = 'Exception';
$code = null;
} else {
if ($input == E_STRICT) return;
if ($input != E_ERROR) return;
$title = 'PHP Error';
$error = $msg.' in <strong>'.$file.'</strong> on <strong>line '.$line.'</strong>.';
$code = null;
}
debug($title, $error, $code);
}
set_error_handler('php_error');
set_exception_handler('php_error');
Ответ 4
вы можете путешествовать по php.net и w3-школам для базовых знаний
а также попробуйте эту ссылку:
http://ralphschindler.com/2010/09/15/exception-best-practices-in-php-5-3