一個大的項目中有大半部分程序是用來處理錯誤與異常的,die()常用,
die()
die —
等同於 exit(),但還可以打印文字出來。
die("文件不存在");
相當於exit();
echo "文件不存在";
異常處理:
$file = fopen("aa.txt","r");
echo "ok";
這樣會出現問題,因爲沒有處理文件;所以異常處理需要對它先判斷是否存在:if(file_exists("aa.txt"))
{
$file = fopen("aa.txt","r");
echo "ok";
fclose();
} else
{
die("文件不存在");
}
- Try - 使用異常的函數應該位於 "try" 代碼塊內。如果沒有觸發異常,則代碼將照常繼續執行。但是如果異常被觸發,會拋出一個異常。
- Throw - 這裏規定如何觸發異常。每一個 "throw" 必須對應至少一個 "catch"
- Catch - "catch" 代碼塊會捕獲異常,並創建一個包含異常信息的對象
讓我們觸發一個異常:
1 <?php 2 //創建可拋出一個異常的函數 3 function checkNum($number){ 4 if($number>1){ 5 throw new Exception("Value must be 1 or below"); 6 } 7 return true; 8 } 9 10 //在 "try" 代碼塊中觸發異常 11 try{ 12 checkNum(2); 13 //如果異常被拋出,那麼下面一行代碼將不會被輸出 14 echo 'If you see this, the number is 1 or below'; 15 }catch(Exception $e){ 16 //捕獲異常 17 echo 'Message: ' .$e->getMessage(); 18 } 19 ?>
上面代碼將獲得類似這樣一個錯誤:
Message: Value must be 1 or below
例子解釋:
上面的代碼拋出了一個異常,並捕獲了它:
- 創建 checkNum() 函數。它檢測數字是否大於 1。如果是,則拋出一個異常。
- 在 "try" 代碼塊中調用 checkNum() 函數。
- checkNum() 函數中的異常被拋出
- "catch" 代碼塊接收到該異常,並創建一個包含異常信息的對象 ($e)。
- 通過從這個 exception 對象調用 $e->getMessage(),輸出來自該異常的錯誤消息
路徑問題:
絕對路徑:就是文件所在的具體位置,如:
“D:/photos/1.jpg”;
相對路徑:與程序所在位置有關,如:
“1.jpg”