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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@brook 

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

  1. Создать класс, расширяющий базовый класс исключения Exception.
  2. В конструкторе класса передать сообщение об ошибке и код ошибки.
  3. Добавить необходимые методы для получения дополнительной информации об ошибке, если это необходимо.
  4. Определить метод render, если необходимо кастомизировать вывод ошибки (например, для API).


Пример:

 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
namespace AppExceptions;

use Exception;

class CustomException extends Exception
{
    public function __construct(string $message = "", int $code = 0, Exception $previous = null)
    {
        parent::__construct($message, $code, $previous);
    }

    public function getDescription()
    {
        return 'This is a custom exception.';
    }

    public function getErrorCode()
    {
        return 500;
    }

    public function render()
    {
        return response()->json([
            'message' => $this->getMessage(),
            'description' => $this->getDescription(),
        ], $this->getErrorCode());
    }
}


После этого вы можете использовать этот класс в своем коде для выброса кастомных исключений:

1
throw new CustomException('Something went wrong.');


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

от jazmyne , 5 месяцев назад

@brook 

Дополню ваш ответ: после создания класса CustomException вам нужно использовать его для выброса исключений в вашем коде. Например, в контроллере Laravel вы можете использовать следующий код для выброса кастомного исключения:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public function index()
{
    try {
        // Some logic that may trigger an exception
        throw new CustomException('Custom error message');
    } catch (CustomException $e) {
        // Handle the custom exception
        return response()->json(['error' => $e->getMessage()], $e->getErrorCode());
    }
}


Таким образом, вы можете создавать и обрабатывать кастомные исключения в вашем приложении Laravel.