考虑:
try{
class MyException extends Exception{}
try{
throw new MyException;
}
catch(Exception $e){
echo "1:";
throw $e;
}
catch(MyException $e){
echo "2:";
throw $e;
}
}
catch(Exception $e){
echo get_class($e);
}
我对这个 try and catch 很困惑。由于第二个 try throw MyException
,我期待 2:MyException
结果。但实际结果是1:MyException
。什么解释?
最佳答案
MyException
extends Exception
,所以Exception
比MyException
更通用,第一个catch
block 将捕获它。如果你想捕获 MyException
,你需要颠倒 catch
block 的顺序:
class MyException extends Exception{}
try {
try {
throw new MyException;
} catch(MyException $e){
echo "2:";
throw $e;
} catch(Exception $e){
echo "1:";
throw $e;
}
}catch(Exception $e){
echo get_class($e);
}
关于php - 嵌套的 try catch 在 PHP 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19203928/