Исключение InvalidArgumentException
Исключение InvalidArgumentException наследуется от стандартного класса
\InvalidArgumentException языка PHP и реализует интерфейс
ExceptionInterface. Оно выбрасывается, когда в метод или функцию
передан аргумент, который не соответствует ожидаемому формату,
типу или значению. Первым параметром в конструктор передаётся
сообщение об ошибке, вторым - код исключения, третьим -
предыдущее исключение.
Синтаксис
throw new InvalidArgumentException(string $message = "", int $code = 0, ?Throwable $previous = null);
Пример
Давайте выбросим исключение InvalidArgumentException,
если переданное число меньше нуля:
<?php
namespace AppService;
use SymfonyComponentValidatorExceptionInvalidArgumentException;
class ArticleService
{
public function setCount(int $count): void
{
if ($count < 0) {
throw new InvalidArgumentException('Count must be positive.');
}
echo "Count: " . $count;
}
}
?>
Результат выполнения кода при вызове метода с корректным аргументом:
"Count: 5"
Результат выполнения кода при вызове метода с отрицательным аргументом:
Fatal error: Uncaught InvalidArgumentException: Count must be positive.
Пример
Давайте обработаем исключение InvalidArgumentException
с помощью конструкции try-catch:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
use SymfonyComponentValidatorExceptionInvalidArgumentException;
class ArticleController extends AbstractController
{
#[Route('/article/{id}', name: 'article_show')]
public function show(int $id): Response
{
try {
if ($id <= 0) {
throw new InvalidArgumentException('ID must be greater than zero.');
}
return new Response('Article ID: ' . $id);
} catch (InvalidArgumentException $e) {
return new Response('Error: ' . $e->getMessage(), 400);
}
}
}
?>
Результат выполнения кода для адреса /article/5:
Article ID: 5
Результат выполнения кода для адреса /article/0:
Error: ID must be greater than zero.
Смотрите также
-
исключение
HttpException,
которое является базовым для HTTP-исключений -
исключение
BadRequestHttpException,
которое выбрасывается при ошибке 400 -
исключение
NotFoundHttpException,
которое выбрасывается при ошибке 404 -
интерфейс
HttpExceptionInterface,
который реализуют все HTTP-исключения