Как сделать кастомные исключения в laravel

Пользователь

от keyon.brown , в категории: PHP , 2 года назад

Как сделать кастомные исключения в laravel

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rodger.botsford , 2 года назад

@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, и переопределили его свойства и методы:

  • $message - сообщение исключения по умолчанию;
  • __construct() - конструктор класса, позволяющий передать сообщение исключения;
  • report() - метод для логирования исключения;
  • render() - метод для обработки исключения и возвращения ответа.


Для использования кастомного исключения в приложении можно вызвать его в коде:

1
throw new CustomException('Custom exception message');


При возникновении исключения будет вызван метод report(), а затем - метод render(), который вернет ответ в формате JSON с кодом 400 и сообщением об ошибке.

Пользователь

от richie_mayert , год назад

@keyon.brown 

В данном примере мы создали класс CustomException, наследующий класс Exception. Мы также переопределили его конструктор, чтобы можно было передавать сообщение исключения при его создании.


Также мы добавили метод report(), который может использоваться для логирования исключения, и метод render(), который используется для обработки исключения и возврата ответа. В данном случае, метод render() возвращает ответ в формате JSON с кодом 400 и сообщением об ошибке.


Чтобы использовать кастомное исключение в коде, просто вызовите его с помощью оператора throw, например:


throw new CustomException('Custom exception message');


При возникновении исключения будет вызван метод report() для логирования исключения, а затем метод render() для обработки исключения и возврата ответа. В данном примере, будет возвращен ответ в формате JSON с кодом 400 и сообщением об ошибке.