【问题标题】:Try catch not working in Laravel 5.4尝试在 Laravel 5.4 中不工作
【发布时间】:2017-03-29 12:03:06
【问题描述】:

最近开始使用 Laravel 5.4。我试图在下面的代码中捕获一个错误并从控制器返回一个 json 响应,但它似乎通常会抛出错误

try {
    $credentials = $request->only('Username', 'Password');
    $driverdata = Driver::where('username', $credentials['Username'])
            ->where('password', Hasher::hash($credentials['Password']))
            ->where('deleted', 0)
            ->where('blocked', 0)
            ->where('status', 1)
            ->first();
    // if(!count($driverdata)){
    //  return response()->json("Login Failed",401);
    // }                        
    return response()->json($driverdata->toArray());
} catch (Exception $e) {
    return response()->json($e->getMessage(), 500);
}

我也试过了

use Exception;

在顶部 也用作

catch (\Exception $e) {
    return response()->json($e->getMessage(), 500);
}

以下是我得到的错误

LoginController.php 第 26 行中的 FatalErrorException: 在 null 上调用成员函数 toArray()

有什么建议吗?但同样的事情曾经在 Laravel 5.2 中工作

【问题讨论】:

  • 你得到的确切错误是什么?
  • 抱歉更新了问题@RahmanQaiser
  • FatalErrorException 不会被 php 捕获。
  • 不如手动处理当前场景 if($driverdata){ return response()->json($driverdata->toArray()); } return response()->json(['success' => false , 'error' => 'not found']);
  • @JustOnUnderMillions 不知道

标签: php laravel try-catch


【解决方案1】:

要解决您的问题在 null 上调用成员函数 toArray() 更改:

 // if(!count($driverdata)){
 //  return response()->json("Login Failed",401);
 // }  

 if(!count($driverdata)){
    //return response()->json("Login Failed",401);
    throw new Exception('Login Failed');
 }  

这也修复了当前的 FatalErrorException

对于其余的谷歌:laravel 5.4 fatalerrorexception php 5.6

【讨论】:

  • 对不起,我不在了.. 为什么当我发现 $driverdata 为空时会抛出错误。我只是好奇地发现并识别致命错误
  • @KarthikNk 基本上这是为了防止致命错误,因为您使用未经测试的$driverdata。如果 $driverdatanull 你会得到 FatalError。所以我在这里发布了一个测试。如果你在这一点上抛出一个错误或没有在你身上。此时您可以更好地将普通异常处理为 FatalErrorException。我不知道你devleop有多好,所以我给出一个简单的解决方案。 A 不得不问:为什么要对代码的部分进行注释?因为这允许代码抛出 FatalError。如果您取消注释,您将不会再收到错误消息。哪里来的反对票!?重新检查代码逻辑。
  • 这证明了这一点,但我一直在寻找直接接球而不是手动投掷。但是是的,正如提到的 FatalErrorException 不能被捕获。顺便说一句,我没有对 TBH 投反对票
猜你喜欢
  • 2017-10-25
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-30
  • 2019-01-21
  • 1970-01-01
相关资源
最近更新 更多