Обработка исключений Laravel без оператора try / catch - PullRequest
0 голосов
/ 13 июня 2019

Мне интересно, это хорошая практика - генерировать исключения без оператора try / catch. Например

/// Класс Driver

class Driver{

 public function setAge($age)
   if(is_string($age)){
      throw new StringException('Age can not be string')
   }
   if($age>100){
      throw new TooLargeNumberException('Age is too large')
   }
}

/// контроллер

$d= new Driver()
$d->setAge(101) /// return TooLargeNumberException

Или

try{
$d= new Driver()
$d->setAge(101)
}
catch(StringException $e){
 return $e->getMessage()
}
catch(TooLargeNumberException $e){
return $e->getMessage()
}

Пожалуйста, посоветуйте мне, как обращаться с исключениями. Какое решение является правильным? Обязательно ли всегда использовать оператор try / catch?

1 Ответ

0 голосов
/ 13 июня 2019

В Laravel есть общий обработчик исключений, в который попадают все неперехваченные исключения:

App\Exceptions\Handler

В этом классе есть два метода: report и render, с помощью которых вы можетевыполните необходимые действия.

Пожалуйста, см .: https://laravel.com/docs/5.8/errors

То есть вы можете throw исключения внутри class Driver, и не нужно обрабатывать их специально в контроллере, вы можете иметь общую стратегию обработки исключений, определенную в вашем Handler классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...