Пользовательское сообщение об исключении PHP - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть абстрактный класс, который переносит исключение PHP:

abstract class MyException extends Exception
{

    public function __construct($message, $code = 0, Exception $previous = null)
    {   
        parent::__construct($message, (int) $code, $previous);
    }
}

Тогда у меня есть другие классы, такие как:

class UserException extends MyException
{
    public function __toString()
    {
        return parent::getMessage();
    }
}

При попытке выдать ошибку, сделав throw new UserException('User does not exist');

Это не только показывает сообщение, которое я определил. Показывает:

Неустранимая ошибка: пользователь, которого нет, не существует \ path \ ClassTest.php в строке 69

Как мне избавиться от части "Неустранимая ошибка: Неустранимая ..."?

Большое спасибо.

EDIT:

Я нашел ответ, использование set_exception_handler() переопределит необработанные исключения. И позволяют обеспечить функцию обратного вызова

1 Ответ

0 голосов
/ 11 декабря 2011

Часть «фатальная ошибка» генерируется, потому что исключение выдается за пределами оператора try-catch и, наконец, перехватывается обработчиком ошибок php. Неисследованные исключения всегда смертельны.

Попробуйте окружить код, генерирующий исключение, оператором try-catch, например:

try{
    $foo->bar();
catch(UserException $ex){
    // Do something with the exception.
}

Также вы можете создать свой собственный обработчик ошибок -> Linky .

Но подход try-catch - это «правильный» способ сделать это.

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