【问题标题】:try/catch block doesn't work when Model's id is unexpected当模型的 id 异常时,try/catch 块不起作用
【发布时间】:2019-04-16 14:02:02
【问题描述】:

这是我的代码:

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

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

【问题讨论】:

  • exact 错误信息是什么?这甚至与异常有关吗?
  • @NicoHaase 当您尝试将属性分配给null 时,即使用$myLaravelModel->done = true;,它会引发错误“ErrorException:从空值创建默认对象”。注意这个错误是 Laravel 特有的;这是基本 php 中的Warning。话虽如此,我无法重现此问题。我的try { ... } catch(){ ... } 处理得很好。

标签: php laravel exception model


【解决方案1】:

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

未找到异常

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多