#php #error-handling
#php #обработка ошибок
Вопрос:
Является ли хорошей практикой объединение return
и error handling
внутри функции?
Ответ Api возвращает успех (true или false), идентификатор из таблицы и сообщение (если содержит ошибку). Я также хочу знать, почему произошла ошибка. Например:
$response = [
'success' => false,
'message' => 'Failed to generate an id and bla bla bla',
];
Какой из них лучше?
//1
public function store(Request $request)
try {
$response = $this->apiCall();
if($response['success'] == true){
$id = $response['id'];
//and then Insert ``id`` in a table
} else {
throw new ErrorException($response['message']);
}
} catch(Exception $e){
//But i need to know why the error happened
dd($e); //Returns 'Failed to generate an id and bla bla bla'
}
}
public function apiCall()
{
$guzzle = new Client;
$response = $guzzle->post('https://api_url.com', [
'form_params' => [
'dummy' => 123,
],
]);
return $response;
}
//VS
//2
public function store2(Request $request)
try {
$id = $this->apiCall2();
//and then Insert ``id`` in a table
} catch(Exception $e){
//But i need to know why the error happened
dd($e); //Returns 'Failed to generate an id and bla bla bla'
}
}
public function apiCall2()
{
$guzzle = new Client;
$response = $guzzle->post('https://api_url.com', [
'form_params' => [
'dummy' => 123,
],
]);
if($response['success'] == true){
return $response['id'];
} else {
throw new ErrorException($response['message']);
}
return null;
}
Комментарии:
1. оба в порядке, хотя я бы использовал первый, но я предложу проверить, всегда ли вы получаете true false как логическое значение или в строке
Ответ №1:
Может быть много причин для сбоя вызова API, и это зависит от того, как разработчик API справился с этим. Всегда рекомендуется использовать try-catch для вызова API, и вы можете записать сообщение об ошибке или вернуть его обратно в ответ функции.