Исключение ServiceUnavailableHttpException
Исключение ServiceUnavailableHttpException
используется для возврата ответа с кодом
503 Service Unavailable. Оно сигнализирует
клиенту, что сервер временно не может
обработать запрос. Первым параметром
передаётся время в секундах, через которое
сервис станет доступен, вторым - текст
сообщения об ошибке.
Синтаксис
new ServiceUnavailableHttpException(
int $retryAfter = null,
string $message = '',
Throwable $previous = null,
int $code = 0,
array $headers = []
)
Пример
Давайте выбросим исключение в контроллере, если сервис временно недоступен:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpKernelExceptionServiceUnavailableHttpException;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$available = false;
if (!$available) {
throw new ServiceUnavailableHttpException(
60,
'Service is temporarily unavailable.'
);
}
return new Response('hello');
}
}
?>
Результат выполнения кода:
503 Service Unavailable
Пример
Давайте перехватим исключение и выведем его сообщение:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpKernelExceptionServiceUnavailableHttpException;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
try {
throw new ServiceUnavailableHttpException(
120,
'Please try again later.'
);
} catch (ServiceUnavailableHttpException $e) {
$res = $e->getMessage();
return new Response($res);
}
}
}
?>
Результат выполнения кода:
"Please try again later."
Пример
Давайте получим код статуса исключения:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpKernelExceptionServiceUnavailableHttpException;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
try {
throw new ServiceUnavailableHttpException(60);
} catch (ServiceUnavailableHttpException $e) {
$res = $e->getStatusCode();
return new Response((string) $res);
}
}
}
?>
Результат выполнения кода:
503
Смотрите также
-
исключение
HttpException,
которое является базовым для HTTP-исключений -
исключение
TooManyRequestsHttpException,
которое представляет ошибку 429 Too Many Requests -
метод
getStatusCode,
который возвращает код статуса исключения -
метод
getMessage,
который возвращает текст сообщения об ошибке