Почему перехват исключения не работает?

Доброго времени суток.
Сделал вот такой код:
<?php
function foo(
			string $m): void{
	if(!is_string($m)){
		throw new Exception('не строка');
	}
}
try{
	foo(15);
}
catch(Exception $e){
	echo 'перехваченное исключение', $e->getMessage();
}

В браузере имею пустую страницу, почему?
И ещё вопрос: можно ли все типы исключений отлавливать сразу с помощью Throwable? Или существуют другие способы (без перечисления всех типов)?

Благодарю за ответы.
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
@galliard
Если у тебя включен строгий режим, то исключение бросает сам пхп в момент вызова функции, потому что ты передаешь не верный тип аргумента. Все исключения, бросаемые самим пхп, наследуются от класса Error, а ты ловишь Exception, и, само собой, не можешь ничего поймать.

Throwable - общий интерфейс и для Error, и для Exception, поэтому с его помощью ты сможешь ловить все ошибки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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