【发布时间】:2017-11-17 15:27:56
【问题描述】:
我正在尝试做一个非常基本的异常尝试捕获,但它没有捕获。
$id =0;
try {
$question = $this->model->find($id); // will not find anything since $id = 0
$question->delete(); // throw an exception
return true;
} catch (\Exception $e) {
dd ('hello'); // should end up here, but no?!?!?
} catch (FatalThrowableError $f) {
echo ("fatal"); // or here... but no.
}
但捕获不会“捕获”。我在浏览器中收到一个致命错误,说删除是在一个空对象上调用的。但这正是我想要做的:对空对象执行删除(id = 0 不在数据库中),以测试异常。
我试过了
use Symfony\Component\Debug\Exception;
use Symfony\Component\Debug\Exception\FatalThrowableError;
或者干脆
Exception;
FatalThrowableError;
此外,拥有 \Exception $e 或 Exception $e (带或不带 )不会改变任何东西。
请注意,如果我添加像 $foo = 4/0 这样的行,我会进入异常部分 (dd (hello))。
在.env APP_DEBUG=true, APP_LOG_LEVEL=debug
我在 Laravel 5.5 上使用 Windows 7 上的 PHP 7.0.10。
【问题讨论】:
-
我会添加您看到的错误消息的确切内容。另外,您是否尝试过捕捉
\Throwable?这是在 PHP 7 中添加的以替换\Exception- php.net/manual/en/class.throwable.php