[PHP]try catch / exception例外處理

錯誤處理以前總是用人工的方式,預先想到可能會出現的問題
比如說divided by zero或是資料庫沒連接上的問題
然後用if判斷式跳出自訂的提示訊息



至於為什麼要try catch還有try catch跟用if有什麼差別
查到的資料大概是說

「try catch用於防止異常使應用程序崩潰或正常處理異常
並執行日誌記錄並給出用戶反饋。
If-else(else if)用於檢查應用程序的內部狀態,並相應地執行不同的操作
同樣的案例中,try-catch的效能低於switch-case或else-if方法。」

所以用try catch比較快嗎?之後有時間試看看好了

來看範例
<?php
try{
$name = $_GET['name'];
if($name == ''){
throw new Exception('不得為空');
}
echo 'hi, '.$name;
}catch(Exception $e){
echo $e->getMessage(), "n";
exit();
}

echo ' 您好';
?>

這是最簡單的一個使用者名稱驗證
當使用者名稱輸入是空白,符合try裡面的if條件
執行完if內的 throw new Exception客製化錯誤訊息,就跳出程式
直接執行catch內的內容,此例為印出錯誤訊息並結束程式

若是有輸入使用者名稱,則不執行if內的 throw new Exception
接著往下執行印出使用者名稱,同時也不會執行catch內容
而是向下執行,印出您好

以上就是一個簡單的範例,以前從來沒用過
第一次看到真的有點不知所措
用try catch可以達成把程式碼區塊化
容易出現例外的內容可以印出例外狀況,對於除錯和品管很有幫助

留言