首页 > 解决方案 > 当模型的 id 异常时,try/catch 块不起作用

问题描述

这是我的代码:

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

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

标签: phplaravelexceptionmodel

解决方案


您需要使用 findOrFail()。MyLaravelModel::findOrFail($id). 正如这里所说。

未发现异常

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


推荐阅读