Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
<?php
namespace App;
try {
throw new \RuntimeException('x');
} catch (Exception $e) {
echo 'app';
} catch (\Exception $e) {
echo 'global';
}
echo "\n";global
- Ждать, что
catch (Exception $e)внутри пространства имён поймает исключение: имя класса без\ищется в текущем пространстве, этоApp\Exception, и такойcatchничего не ловит. - Считать, что
catchс несуществующим классом — ошибка: PHP этот класс не ищет, блок молча не срабатывает, и ошибка остаётся незамеченной.
- Как исправить первый
catch, чтобы он ловил любое исключение? - Почему
strlen()внутриnamespace Appработает без обратной косой черты впереди?