【发布时间】:2011-02-04 21:48:29
【问题描述】:
我对以下代码感到困惑:
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) ?
谢谢。
【问题讨论】: