Задать вопрос

PHP/Yii2 как правильно обрабатывать исключения?

Признаюсь, я нуб по части работы с исключениями. Раньше, по большей части, обходился без них, а теперь хочу разобраться.
Зачем в PHP два базовых класса \Exception и \ErrorException?
Почему Exception перехватывает Unknown Property Exception, но не ловит, скажем, деление на 0?? А в ErrorException с точности наоборот?
try {
  $myClass->myUnknowProperty;
  //10/0; //error!!!1
  // throw new \ErrorException ("tralala"); // error!!!
} catch (\Exception $e) { 
  log("warning UnknowProperty");
}

try {
  //$myClass->myUnknowProperty; //error!!
  10/0;
  //throw new \Exception("tralala"); // error!!
} catch (\ErrorException $e) { 
  log("warning division by zero");
}

Моя цель, в случае ошибки залогировать ее и показать пользователю страницу, пусть и с некоторыми багами, но не кидать его на server error.
Как перехватываете исключения вы?
  • Вопрос задан
  • 1940 просмотров
Подписаться 3 Оценить Комментировать
Решение пользователя Zohei К ответам на вопрос (3)
@Zohei Автор вопроса
Почему Exception перехватывает Unknown Property Exception, но не ловит, скажем, деление на 0?? А в ErrorException с точности наоборот?

это все частично от невнимательности:
catch \Exception прекрасно перехватывает исключения, я же пытался ловить исключения классом \yii\base\Exception =(
Ответ написан