Ответы пользователя по тегу Yii
  • Правильно ли я использую исключения?

    voronkovich
    @voronkovich
    Нужно сделать отдельное исключение NotEnoughBonusesException и бросать его, остальные логировать.

    try {
    }
    catch (App\Exception\NotEnoughBonusesException $e) {
          $transaction->rollBack();
          Yii::$app->session->setFlash('error',  'Недостаточно бонусов для оплаты.');
    }
    catch (\Throwable $e) {
         Yii::$app->session->setFlash('error',  'Произошла ошибка.');
         $transaction->rollBack();
    
        // Нужно бросить исключение дальше, чтобы обработчик по уполчанию его занес в лог
        // Надеюсь в Yii есть обработчик по умполчанию?
        throw $e;
    }

    Также вам следует создать базовый класс для всех исключений вашего приложения, а не использовать \Exception.

    Если вы хотите передать сообщение для пользователя вместе с исключением, создайте интерфейс UserFriendlyExceptionInterface с методами setUserMessage/getUserMessage и используйте их для отправки сообщения об ошибке пользователю:
    try {
    } catch (App\Exception\UserFriendlyExceptionInterface $e) {
        Yii::$app->session->setFlash('error',  $e->getUserMessage());
    
        throw $e; // Передаем дальше для логирования
    }
    Ответ написан
    2 комментария