Меня смущает следующий код:
class MyException extends Exception {}
class AnotherException extends MyException {}
class Foo {
public function something() {
print "throwing AnotherException\n";
throw new AnotherException();
}
public function somethingElse() {
print "throwing MyException\n";
throw new MyException();
}
}
$a = new Foo();
try {
try {
$a->something();
} catch(AnotherException $e) {
print "caught AnotherException\n";
$a->somethingElse();
} catch(MyException $e) {
print "caught MyException\n";
}
} catch(Exception $e) {
print "caught Exception\n";
}
Я ожидаю, что это выведет:
throwing AnotherException
caught AnotherException
throwing MyException
caught MyException
Но вместо этого он выдает:
throwing AnotherException
caught AnotherException
throwing MyException
caught Exception
Может ли кто-нибудь объяснить, почему он "пропускает" catch (MyException $e)?
Спасибо.