当模型的ID意外时,try / catch块不起作用

时间:2019-04-16 14:02:02

标签: php laravel exception model

这是我的代码:

$id = 'wrong id';
try{
    $myLaravelModel = MyLaravelModel::find($id);
    $myLaravelModel->done = true; //here's error      
}catch (Exception $e){
    return 'error';
}

并且当代码到达注释行时,我得到了错误:“从空值创建默认对象”,这是准确的,但是我认为catch块将捕获该错误并返回“错误”。为什么它不起作用?

1 个答案:

答案 0 :(得分:6)

您需要使用findOrFail()。 MyLaravelModel::findOrFail($id)。 正如here中所说。

  

未发现异常

     

有时候,如果找不到模型,您可能希望抛出异常。   这在路由或控制器中特别有用。 findOrFail   和firstOrFail方法将检索查询的第一个结果;   但是,如果未找到结果,   Illuminate\Database\Eloquent\ModelNotFoundException将被抛出: