我有一个包装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()
将覆盖未捕获的异常。并允许提供回调函数
答案 0 :(得分:0)
生成“致命错误”部分是因为异常在try-catch语句之外抛出,并最终被php错误处理程序捕获。未捕获的例外总是致命的。
尝试使用try-catch语句包围生成异常的代码,如:
try{
$foo->bar();
catch(UserException $ex){
// Do something with the exception.
}
或者你可以制作自己的错误处理程序 - > Linky
但是try-catch方法是“正确”的方法。