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

21 Авг 2019 в 07:00
169 +1
0
Ответы
1

Доброго времени суток!

В вашем коде не отображается ничего в браузере, потому что исключение не перехватывается из-за того, что вы вызываете функцию foo с аргументом, который не является строкой. Однако, вы также не указали, что ваша функция может выбрасывать исключение в сигнатуре функции. Для того чтобы исключение было перехвачено, вам нужно сначала изменить сигнатуру функции foo, чтобы она явно указывала, что может выбросить исключение Exception. Вот исправленный код:

function foo(string $m): void {
if (!is_string($m)) {
throw new Exception('не строка');
}
}
try {
foo(15);
} catch (Exception $e) {
echo 'перехваченное исключение: ' . $e->getMessage();
}

Что касается вашего вопроса о Throwable, то да, вы можете перехватывать все типы исключений сразу через Throwable. Throwable является базовым интерфейсом для всех типов ошибок и исключений, поэтому можно использовать его для перехвата всех возможных исключений без явного перечисления каждого типа. Например:

try {
// Код, который может выбросить исключение
} catch (Throwable $t) {
echo 'перехваченное исключение: ' . $t->getMessage();
}

Надеюсь, это поможет вам разобраться с перехватом исключений. Если у вас есть еще вопросы, не стесняйтесь задавать. Благодарю за внимание!

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 091 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир