1.try catch可以捕捉上一層throw的例外
2.finally是不管try或catch任何一塊有return, 最終都會執行的區塊
3.try也是可以捕獲call_user_func_array回呼函數類別內部的throw的異常
4.call_user_func_array只能回調類別的靜態方法,可以在這個靜態方法中進行new物件
5.在不自訂任何錯誤處理函數的情況下,try是不能捕獲php本身的錯誤的,包括notice warning error等級別
下面的程式碼是專案中的一個部分,經過了多層呼叫和回調
<?php class Oss { public static function connect() { throw new Exception("oss connect error"); return 'oss object'; } } //调用三层 class S3{ public static function connect() { //throw new Exception("s3 connect error"); return 's3 object'; } } //调用二层 function callReader($class,$url){ try{ $conn=call_user_func_array(array($class, "connect"),array()); return $conn; }catch(Exception $e){ throw $e; }finally{ //无论如何都会执行,在这记录日志 } } //调用一层 function getMessage(){ $conn=null; try { $conn=callReader('Oss',"http://xxxx"); } catch (Exception $e1) { $conn=callReader('S3',"http://xxxx"); } return $conn; } //最先的入口 try{ var_dump(getMessage()); }catch(Exception $e){}
【課程推薦:PHP影片教學】
#以上是try catch在PHP的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!