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

Tut*_*een 0 php model exception laravel

这是我的代码:

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

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

Som*_*Dev 6

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

找不到例外

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