我在Laravel中創建了一個工人類。通過異常的json響應
工人類與流明溝通。如果在流明中出現錯誤,它將以json的形式回覆給Laravel。
工人階級是這樣的: -
class Worker {
public function put($ip, $user, $file)
{
try {
$response = $this->client->post('/put', ['form_params' => ['ip' => $ip,'username' => $user, 'file' => $file]]);
$responseBody = (string)$response->getBody();
// do something
} catch (ClientException | ServerException $e) {
return $this->handleRequestError($e);
}
}
protected function handleRequestError($e)
{
if ($e instanceof ClientException) {
if ($e->getCode() == 422) {
throw new WorkerValidationException((string)$e->getResponse()->getBody());
}
}
if ($e instanceof ServerException) {
$error = json_decode($e->getResponse()->getBody(), true);
if ($error['error_type'] == 'ftp') {
throw new FtpException((string)$e->getResponse()->getBody());
}
if ($error['error_type'] == 'somethingElse') {
throw new SomethingElseException((string)$e->getResponse()->getBody());
}
}
throw new \Exception((string) $e->getResponse()->getBody());
}
}
的handleRequestError()
方法讀取$error['error_type']
值並拋出特定異常。
但是,我想要2或3個錯誤代碼($error['code']
)以json格式迴應用戶。做這件事的好方法是什麼?
如:
if (if ($error['error_type'] == 'ftp' && $error['code'] == 200) {
response(['success' => false, 'message' => 'could not connect']);
}
我不想把響應邏輯的工人階級。我需要在異常處理程序中執行它嗎?
工作者類看起來不錯,它應該總是拋出異常,應該由調用者函數負責決定拋出什麼異常或者要優雅地處理什麼。 –