对于laravel中的值null,Try-Catch不正确



我正在为api进行选择,但当您没有通知合同时,您将返回一个空数组[],但您应该返回找不到的合同。我相信这个陷阱是错误的,但我已经做了一些其他测试,但没有奏效。

try {

if(empty($contratos)){
return response()->json(
$contratos,
200
);
}else{
return response()->json([
"message" => "Contract not found",
"code" => "CONTRACT_NOT_FOUND"
], 406
);
}
} catch (Exception $e) {
if ($exception->getStatusCode() == 406){
return response()->json([
"message" => "Contrato não encontrado",
"code" => "CONTRACT_NOT_FOUND"
]);
}
}

您可以检查这样的查询是否没有结果。

if ($contratos->isEmpty()) {
return response()->json([
"message" => "Contract not found",
"code" => "CONTRACT_NOT_FOUND"
], 406);
} else {
return response()->json($contratos, 200);
}

您应该在异常块中放入一个dd($exceptopm->getStatusCode()),看看返回的状态代码是什么,通常找不到的应该是404而不是406

您还应该尝试使用切换语句

switch($exception->getStatusCode()) {
case 400:
return [];
break;
case 404:
return [];
break;
default:
return [];
}

最新更新