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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 15:45
10000 руб./за проект
23 апр. 2024, в 15:42
5000 руб./за проект
23 апр. 2024, в 15:34
10000 руб./за проект