Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试在Laravel 5.4中不工作的捕获_Php_Laravel_Try Catch - Fatal编程技术网

Php 尝试在Laravel 5.4中不工作的捕获

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($

最近开始在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中也使用了同样的方法来解决在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');
 }