異常處理的基本思想是代碼在try代碼被調用執行。如果try碼塊出現錯誤,我們可以執行一個拋出異常的處理。某些程式設計語言,如java,,在特定情況下將自動拋出異常。在php中,異常必須手動拋出。可以使用如下方式拋出一個異常:
Throw new Exception(‘message’,code);
Throw 關鍵字將觸發異常處理機制,它是一個語言結構,而不是一個函數,但是必須給它傳遞一個值。它要求一個接受對象。在最簡單的情況下,可以執行個體化一個內建的Exception類。
最後,在try代碼之後,必須至少給出一個catch代碼塊。可以將多個catch代碼塊與一個try代碼塊進行關聯。如果每個catch代碼塊可以捕獲一個不同類型的異常,可以使用多個catch代碼塊是有意義的。例如,如果想捕獲Exception類的異常,代碼如下
Catch(Exception $e)
{
//handing exception
}
Catch代碼捕獲的對象就是導致異常並傳遞給throw語句的對象(被throw 語句拋出)。使用Exception 類的執行個體,是不錯的選擇。
Exception類提供了如下的內建方法:
Getcode()?返回傳遞給建構函式的代碼。
GetMessage()?返回傳遞給建構函式的訊息。
getFile()?返回產生異常代碼的檔案的路徑
getLine()?返回產生異常的代碼所在的行。
以下是我使用者註冊功能的部分代碼
查看代碼
1 try{ 2 //check forms filled in 3 if(!filled_out($_POST)){ 4 throw new Exception('你還沒有填寫表單,請回去填寫'); 5 } 6 //check email address not valid 7 if(!check_email($email)){ 8 throw new Exception('郵件的格式不正確'); 9 }10 //檢查密度的長度是否大於611 if(strlen($passwd<6)){12 throw new Exception('密度的長度應該大於6');13 }14 //檢查兩次密碼是否相等15 if($passwd!=$passwd1){16 throw new Exception('兩次密碼不一樣,請重新輸入');17 }18 //檢查使用者名稱的長度是否正確19 if(strlen($username)>16){20 throw new Exception('使用者名稱的長度不符,請重新輸入');21 }22 23 } catch(Exception $e){24 echo $e->getMessage(); //輸出異常資訊。25 }