PHP обработка пользовательских исключений - PullRequest
10 голосов
/ 19 января 2011

Я хочу обработать исключения в моем PHP-приложении самостоятельно.

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

Может кто-нибудь дать мне ссылку на хороший учебник или написать четкое объяснение того, как на самом деле работает обработка исключений (например, как узнать, с каким типом исключения вы имеете дело, и т. Д.)

Ответы [ 4 ]

29 голосов
/ 19 января 2011

Официальные документы - хорошее место для начала - 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();
}
3 голосов
/ 19 января 2011

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

Если вопрос, как сделать некоторыеопределенное действие, если было сгенерировано исключение определенного типа, тогда вам просто нужно указать тип исключения в операторе 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
    }
2 голосов
/ 19 января 2011

Попробуйте это как первое, что есть на вашей странице 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');
1 голос
/ 19 января 2011

вы можете просматривать php.net и w3 школы для получения базовых знаний, а также попробовать эту ссылку:

http://ralphschindler.com/2010/09/15/exception-best-practices-in-php-5-3

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