php拋出異常Exception和\Exception使用區別
沒有定義命名空間的情況下 , Exception和\Exception 均可正常執行拋出異常;
定義命名空間的情況 , Exception 會在定義的命名空間下找對應的異常類 , 如果沒有定義異常類 , 則會報錯 ;
定義命名空間的情況 , \Exception 會按照php默認的異常類執行拋出異常 ;
建議: 拋出異常 使用 \Exception !
#1: 沒有定義命名空間 使用Exception
<?php try { throw new Exception("拋出異常"); } catch (Exception $e) { echo '捕獲到異常'.$e->getMessage(); }
#1> 執行結果
捕獲到異常拋出異常
#2: 沒有定義命名空間 使用\Exception
<?php try { throw new \Exception("拋出異常"); } catch (\Exception $e) { echo '捕獲到異常'.$e->getMessage(); }
#2> 執行結果
捕獲到異常拋出異常
#3: 有定義命名空間 使用Exception
<?php namespace Test; try { throw new Exception("拋出異常"); } catch (Exception $e) { echo '捕獲到異常'.$e->getMessage(); }
#3> 執行結果
Fatal error: Uncaught Error: Class 'Anxiaojing\Exception' not found *** Stack trace: #0 {main} thrown in ***
#4: 有定義命名空間 使用\Exception
<?php namespace Test; try { throw new \Exception("拋出異常"); } catch (\Exception $e) { echo '捕獲到異常'.$e->getMessage(); }
#4> 執行結果
捕獲到異常拋出異常