php學習筆記——錯誤異常處理及路徑問題

一個大的項目中有大半部分程序是用來處理錯誤與異常的,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("文件不存在");
}

PHP異常處理【重點】
 
1、基本語法
        try{
            //可能出現錯誤或異常的代碼
            //catch 捕獲  Exception是php已定義好的異常類
        } catch(Exception $e){
            //對異常處理,方法:
                //1、自己處理
                //2、不處理,將其再次拋出
        }
2、處理處理程序應當包括:
  1. Try - 使用異常的函數應該位於 "try"  代碼塊內。如果沒有觸發異常,則代碼將照常繼續執行。但是如果異常被觸發,會拋出一個異常。
  2. Throw - 這裏規定如何觸發異常。每一個 "throw" 必須對應至少一個 "catch"
  3. 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 

例子解釋:

上面的代碼拋出了一個異常,並捕獲了它:

  1. 創建 checkNum() 函數。它檢測數字是否大於 1。如果是,則拋出一個異常。
  2. 在 "try" 代碼塊中調用 checkNum() 函數。
  3. checkNum() 函數中的異常被拋出
  4. "catch" 代碼塊接收到該異常,並創建一個包含異常信息的對象 ($e)。
  5. 通過從這個 exception 對象調用 $e->getMessage(),輸出來自該異常的錯誤消息


路徑問題:
絕對路徑:就是文件所在的具體位置,如:

“D:/photos/1.jpg”;

相對路徑:與程序所在位置有關,如:

“1.jpg”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章