/** 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(); //入口