PHP的異常以及異常存在的意義
阿新 • • 發佈:2019-02-15
php的try catch與其它語言的try catch相比有許多不同,而且用起來相對比較不爽。
php中,如果你製作的站點相對較大,同時模組化,並且在錯誤處理機制上有一套自己的處理機制,可以嘗試使用try catch,否則,可以考慮不使用它。
PHP的try catch是捕獲異常,但它卻無法捕獲PHP的內部異常,必須是經過throw語句丟擲的異常,它才能正常捕獲,這也意味著,如果你的try程式碼塊中,沒有任何throw語句,或者包含了throw語句的函式,那麼,try catch語句就是廢品,嘛用沒有。
但是,在大型網站的構建中,用於建設一套自己的自定義錯誤處理機制,try catch就顯現出了它的強大,比如,我在構建一個幾乎整站都會用到的一個公用函式,在這個函式裡,我做了大量可能出現的錯誤判斷,並將錯誤throw,那麼在我後面引用這個函式的時候,就可以對其try,並在其catch中對該錯誤進行判斷並做針對性處理。
下面的這做程式碼:
glo("str");
這時候如果使用try catch,就可以捕獲這個異常
php中,如果你製作的站點相對較大,同時模組化,並且在錯誤處理機制上有一套自己的處理機制,可以嘗試使用try catch,否則,可以考慮不使用它。
PHP的try catch是捕獲異常,但它卻無法捕獲PHP的內部異常,必須是經過throw語句丟擲的異常,它才能正常捕獲,這也意味著,如果你的try程式碼塊中,沒有任何throw語句,或者包含了throw語句的函式,那麼,try catch語句就是廢品,嘛用沒有。
但是,在大型網站的構建中,用於建設一套自己的自定義錯誤處理機制,try catch就顯現出了它的強大,比如,我在構建一個幾乎整站都會用到的一個公用函式,在這個函式裡,我做了大量可能出現的錯誤判斷,並將錯誤throw,那麼在我後面引用這個函式的時候,就可以對其try,並在其catch中對該錯誤進行判斷並做針對性處理。
下面的這做程式碼:
function glo(num){ if(is_int(num)){ echo '輸入正確'; }else{ throw new Exception('傳值型別錯誤!'); } }那麼以後我一旦呼叫這個函式,但是傳入的值型別不正確的時候,就會出現異常:
glo("str");
這時候如果使用try catch,就可以捕獲這個異常
try{ glo("str"); }catch($e){ echo $e->getMessage(); }當然,以上的程式碼僅為示例,看起來好像用了try catch還不如不用來得方便,但是到了大型系統中,這樣的機制如果用得有效,則會起到不錯的效果。