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

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

от keyon.brown , в категории: PHP , 7 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от rodger.botsford , 7 месяцев назад

@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 и сообщением об ошибке.