Код из жизни

Опубликовано 2014-02-26 06:50:27

Этот код с точностью до смысла повторяет тот, который я встретил в живом проекте.

[php]

<?php

class MyException extends Exception {

}

class TestException {

    public static function testExc() {

            throw new MyException('MyException ');

    }

}

class Test2Exception {

    public static function test2Exc() {

            TestException::testExc();

    }

}

class Main {

    public function mainMethod() {

            try {

                    Test2Exception::test2Exc();

            } catch (Exception $e) {

                    echo $e->getMessage().PHP_EOL;

            }

    }

}

$m = new Main();

$m->mainMethod();

[/php]

Вопрос: сработает ли catch и что выведет echo? Вопрос простой, но при том, что классы расположены в разных файлах приходится задуматься о том, зачем вообще нужен был MyException и что автор кода хотел нам сказать, когда делал catch на Exception, а не на MyException.