Php 尝试在Laravel 5.4中不工作的捕获
最近开始在Laravel 5.4中工作。我试图在下面的代码中捕获一个错误并从控制器返回一个json响应,但它似乎经常抛出错误Php 尝试在Laravel 5.4中不工作的捕获,php,laravel,try-catch,Php,Laravel,Try Catch,最近开始在Laravel 5.4中工作。我试图在下面的代码中捕获一个错误并从控制器返回一个json响应,但它似乎经常抛出错误 try { $credentials = $request->only('Username', 'Password'); $driverdata = Driver::where('username', $credentials['Username']) ->where('password', Hasher::hash($
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中也使用了同样的方法来解决在null更改时调用成员函数toArray()的问题:
到
这还修复了当前的FatalErrorException
对于其余部分,google:laravel 5.4 fatalerrorexception php 5.6您得到的确切错误是什么?抱歉,php不会捕捉到更新的问题@RahmanQaiser
fatalerrorexception
。相反,如果($driverdata){return response()->json($driverdata->toArray());}return response()->json,您可以手动处理当前场景(['success'=>false,'error'=>notfound'])@数百万人不知道抱歉我离开了..当我发现$driverdata为空时,为什么要抛出一个错误呢?我只是想抓住并识别致命的错误errors@KarthikNk基本上,这是为了防止致命错误,因为您使用的是未经测试的$driverdata
。如果$driverdata
为null
,则FatalError。所以我在这里发布了一个测试。如果你在这一点上抛出错误与否取决于你。在这一点上,你可以更好地处理一个普通异常作为FatalErrorException。我不知道你的开发有多好,所以我给出了一个简单的解决方案。a不得不问:为什么你的代码的部分被注释了?因为这允许代码抛出FatalError。如果如果您取消对此的注释,您将不会再收到错误。向下投票从何而来!?重新检查代码逻辑。这证明了这一点,但我正在寻找直接捕获而不是手动抛出。但是是的,正如前面提到的FatalErrorException无法捕获。顺便说一句,我没有向下投票TBH
// if(!count($driverdata)){
// return response()->json("Login Failed",401);
// }
if(!count($driverdata)){
//return response()->json("Login Failed",401);
throw new Exception('Login Failed');
}