PHP程式設計過程中程式健壯性(自己總結筆記記錄)
阿新 • • 發佈:2019-01-11
在php業務開發中,因為IDE對於php的異常不會像java編輯器IDE那樣智慧自動加上異常捕獲,這時候就需要我們開發的時候手動加上異常捕獲,這樣可以儘可能的保證程式的健壯性。避免反饋到使用者端的是程式異常。下面是自己親測的示例:
SelfException.php的程式碼如下:
class SelfException extends Exception { public function __construct($message = "", $code = 0, Throwable $previous = null) { parent::__construct然後建立index.php檔案:($message, $code, $previous); } public function getUserException(){ return "使用者自己丟擲的異常資訊"; } }
require_once "SelfException.php";//使用者自己丟擲異常,Exception的構造方法 try{ $url = 'http://abc.baidu1.com'; $curl = curl_init(); //設定抓取的url curl_setopt($curl, CURLOPT_URL, $url); //設定標頭檔案的資訊作為資料流輸出 curl_setopt($curl, CURLOPT_HEADER, 1); //設定獲取的資訊以檔案流的形式返回,而不是直接輸出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 10); curl_setopt($curl, CURLOPT_TIMEOUT,1); //執行命令 $data = curl_exec($curl); $info = curl_getinfo($curl); //關閉URL請求 curl_close($curl); if($info['http_code'] != 200) { throw new SelfException('請求出錯'.$url); } }catch (SelfException $e){ echo $e->getUserException().'<pre>'; echo "上面的請求超時不重要的時候,直接通過try繞過,保證程式健壯性"; }
執行結果:
使用者自己丟擲的異常資訊
上面的請求超時不重要的時候,直接通過try繞過,保證程式健壯性總結:有時候如同上面的程式,在請求
http://abc.baidu1.com
連線的時候,該地址是不存在的,程式也不會報錯,大多數時候,我們可能就直接使用了$data變數值,在使用變數值即使做了變數值的驗證,給出使用者提示,這時候如果程式比較龐大,我們去定位問題的位置可能會花些時間,如果使用了這樣的異常,可以很快定位問題位置所在,也可以避免使用者看到程式異常。一般情況下用php的Exception就足夠了,如果Exception裡面的方法不能滿足需求,使用者可以自定義異常類,自定義的異常類需要繼承php的Exception,例如上面的SelfException類。