Добрый день, посоветуйте хорошую статью, чтение стандартной доки не сильно помогло в понимании принципа работы исключений.
Суть
примера #2 самостоятельно не осилил.
Если я правильно понимаю, в Example 1 выполняется первый catch потому что case self::THROW_CUSTOM выбрасывает throw c экземпляром класса MyException.
В Example 2 следуя вышеуказанной логике выполняется второй catch потому что выбрасывает throw c экземпляром класса Exception.
Не могу понять принцип работы в Example 3. Так как в catch стандартным обработчиком исключения не указан MyException, его обрабатывает Exception? Несмотря на то что throw выбрасывает экземпляр MyException.
Но вывод строки $e все равно обрабатывает класс MyException, функцией __toString()