PHP异常自定义消息

时间:2011-12-11 01:28:01

标签: php exception

我有一个包装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');

时抛出错误

它不仅显示我定义的消息。它显示:

  

致命错误:未捕获用户不存在   第69行\ path \ ClassTest.php

如何摆脱“致命错误:未捕捉......”部分?

非常感谢。

编辑:

我找到了答案,使用set_exception_handler()将覆盖未捕获的异常。并允许提供回调函数

1 个答案:

答案 0 :(得分:0)

生成“致命错误”部分是因为异常在try-catch语句之外抛出,并最终被php错误处理程序捕获。未捕获的例外总是致命的。

尝试使用try-catch语句包围生成异常的代码,如:

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

或者你可以制作自己的错误处理程序 - > Linky

但是try-catch方法是“正确”的方法。