PHP異常記一筆

/**
    PHP異常處理
    javaVSphp 之異常(簡單記一筆)
  
    java   函數外:拋的throws
              函數內:拋的throw
    
    php只有 函數內:拋的throw;
    
    何時try{}cath(){} //何時捕獲
    1.就是你能處理的你就捕獲
    2.不能處理的就只有拋了

   比喻:打個比喻不是很形象哈
     
     好比你開發一個圖片處理模塊
     你的圖片處理庫只有2個
              1.jpg圖片處理庫
              2.png圖片處理庫
        
    //寫下面這段代碼的時候你就會想,我這裏只有個2個圖片處理庫,沒有第3個了,
    若是用戶給我傳一個 GIF的圖片
    怎麼辦呢? 
    我這程序是處理不了的,
    這就叫我不能處理的問題了,那就直接拋出就好了

      switch (檢查圖片類型..){
      
                    case  ' jpg' :
                       調用個人 jpg圖片處理庫

                    case  'png':
                       調用個人png圖片處理庫
                     
                     default :
                        你這裏就能夠直接拋出了
                      throw new    Exception ('-_-我只能對jp/pn進行處理');
            
                      
      } 

function compile($filename) {
    $content        = file_get_contents($filename);
    // 替換預編譯指令
    $content        = preg_replace('/\/\/\[RUNTIME\](.*?)\/\/\[\/RUNTIME\]/s', '', $content);
    $content        = substr(trim($content), 5);
    if ('?>' == substr($content, -2))
        $content    = substr($content, 0, -2);
    return $content;
}

 ****/


class  NumberIndexException   extends  Exception {

             Public  function   __Construct($msg) {
                 parent :: __Construct($msg);               
             }

             Public  function  __toString(){
             
                 return $this->message .'--'.$this->code.'--'.$this->file.'--'.$this->line;
             }
}

class   Demo {
 
     Public static function  method(array  $arr, $index) {
                  
             if ($index<0)
                 throw new NumberIndexException ("-_-不能處理了負數下標的出現了...");           
             return   $arr[$index];
     }

}


class  ExceptionsDemo {
 
          /**自定義主函數*/
         Public   Static  function  Main(){
                 $arr = array (1,2,3);                   
                  try{
                   
                       $sum = Demo::method($arr,-30);
                        echo  'sum='.$sum; //輸出
                  
                   } catch(NumberIndexException   $e) {
                                      
                           echo '異常...';
                           echo  '<pre>';
                           echo  'message:'.$e->getMessage();  //取得信息
                           echo  $e->getCode();
                           echo  $e->getFile();  
                           echo  $e->getLine(); 
                           echo '<hr/>';

                           echo  $e->getTrace();  
                           echo  $e->getTraceAsString();//打印出在堆棧中的信息
                           echo '<hr/>';
                           echo  $e->__toString(); //把對象轉換爲字符串
                           echo  '</pre>';
                   }
         }

}

header("Content-Type:text/html;charset=utf-8;");
ExceptionsDemo :: Main();  //入口
相關文章
相關標籤/搜索