我正在使用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