machetero
@machetero
gotlib.me

Исключения PHP 7?

Вообщем поставил я себе php 7 из нового опенсервера(да, мне стыдно в этом признаваться) и решил протестить исключения движка. Тобишь вместо ошибок теперь должны исключения вылетать. Но у меня try catch'ем не перехватывается ничего, вылезают обычные сообщения о parse error как раньше. Что делать ?
<?php
class app
{
	public function run()
	{
		try {
		
			$this->throwex();
			
		} 
		catch (Error $e) {
		
		echo $e->getMessage().'catched';
		
		}
	}
	
	public function throwex(){
	echo 'now ex will be thrown';
	int = 10/0;
	echo 'throwing was done';
	}
}

(new app)->run();

так и выводиться parse error
  • Вопрос задан
  • 476 просмотров
Пригласить эксперта
Ответы на вопрос 3
@neol
В PHP 7 механизм сообщения об ошибках был сильно изменен. Традиционный доклада об ошибке в PHP 5 был заменен новым механизмом, в котором большинство ошибок сообщается с помощью исключений класса Error.


Так как класс Error не наследуется от класса Exception, блок catch (Exception $e) { ... } для обработки неперехваченных исключений PHP 5 не может перехватить Error исключения.


php.net/manual/ru/language.errors.php7.php
Ответ написан
Комментировать
@RFL
Поставьте перед Error обратный слеш:
catch (\Error $e) {
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы