@keyon.brown
В Laravel для создания кастомных исключений можно воспользоваться классом Exception
и его наследниками.
Для создания нового класса исключения в Laravel можно использовать команду Artisan:
1
|
php artisan make:exception CustomException |
После выполнения этой команды будет создан файл CustomException.php
в директории app/Exceptions
.
Пример кастомного исключения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php namespace AppExceptions; use Exception; class CustomException extends Exception { protected $message = 'Custom exception message'; public function __construct($message = null) { if ($message) { $this->message = $message; } } public function report() { // Логирование исключения } public function render($request) { return response()->json([ 'error' => $this->message, ], 400); } } |
В данном примере мы создали класс CustomException
, наследующий класс Exception
, и переопределили его свойства и методы:
Для использования кастомного исключения в приложении можно вызвать его в коде:
1
|
throw new CustomException('Custom exception message'); |
При возникновении исключения будет вызван метод report()
, а затем - метод render()
, который вернет ответ в формате JSON с кодом 400 и сообщением об ошибке.
@keyon.brown
В данном примере мы создали класс CustomException, наследующий класс Exception. Мы также переопределили его конструктор, чтобы можно было передавать сообщение исключения при его создании.
Также мы добавили метод report(), который может использоваться для логирования исключения, и метод render(), который используется для обработки исключения и возврата ответа. В данном случае, метод render() возвращает ответ в формате JSON с кодом 400 и сообщением об ошибке.
Чтобы использовать кастомное исключение в коде, просто вызовите его с помощью оператора throw, например:
throw new CustomException('Custom exception message');
При возникновении исключения будет вызван метод report() для логирования исключения, а затем метод render() для обработки исключения и возврата ответа. В данном примере, будет возвращен ответ в формате JSON с кодом 400 и сообщением об ошибке.