我正在使用laravel 5.4。我有一个类中的方法获取模型类的新实例。该类的全名在运行时计算,因此计算出的类名不存在。如果该类不存在,我想忽略任何异常,并且我想返回null
。Laravel在我尝试时抛出异常事件,赶上
但是,当异常发生,Laravel仍然抛出该异常甚至低于以为我相信它不应该
[Symfony的\分量\调试\异常\ FatalThrowableError] 类“应用程序\型号\ CreatedBy”不找到
请注意,字符串App\Models\CreatedBy
是在运行时计算的。
这里是我的代码
private function getForeignModelInstance()
{
try {
if (!$this->foreignModel) {
$model = $this->getFullForeignModel();
if ($model) {
$this->foreignModel = new $model();
}
}
return $this->foreignModel;
} catch (\Exception $e) {
return null;
}
}
怎能无视抛出的任何错误,并通过返回null
解决?
抓住'Throwable'而不是'Exception' – MoeinPorkamel
'FatalThrowableError'扩展'Exception'我相信所以它不应该有所作为。即使我尝试过,但得到相同的错误。 –
我遇到同样的问题,除了我在数据库迁移内部,所以我真的需要能够可靠地运行一些清理代码。我不认为“尝试防止发生异常”类型的解决方案是有效的。我想了解为什么基本的PHP尝试捕获不在这里工作,我们做错了什么? – madz