Iqb*_*ary 5 php nested try-catch
考虑:
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);
}
Run Code Online (Sandbox Code Playgroud)
我对此尝试和捕获感到困惑.我期待2:MyException结果,因为第二个try throw MyException.但实际结果是1:MyException.解释是什么?
小智 14
MyException延伸Exception,因此Exception更通用MyException,并且第一个catch块将捕获它.如果你想抓住MyException你需要扭转catch块的顺序:
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17563 次 |
| 最近记录: |