錯誤報告關閉和打開php
php.ini 的 display_errors = On 或者 Offthis
代碼裏 ini_set(‘display_errors’,1) 或者 0spa
錯誤報告級別code
最佳實踐blog
開發環境下打開錯誤報告。而且錯誤報告級別 E_ALL
正式環境必定要關閉錯誤報告開發
//顯示全部的錯誤類型 error_reporting(E_ALL); //顯示全部的錯誤類型,除了NOTICE 提示以外 error_reporting(E_ALL ^ E_NOTICE); error_reporting(E_ALL &~ E_NOTICE); //關閉全部的PHP錯誤報告 error_reporting(0); //報告全部的錯誤類型 error_reporting(-1);
舉例get
try { //找不到文件 throw new Exception('找不到文件',1); //沒有權限訪問 throw new Exception('沒有權限',2); } catch (Exception $e) { $errno = $e -> getCode(); if($errno == 1){ echo $e -> getFile(); }elseif($errno == 2){ echo $e -> getLine(); } }
文件異常類it
class FileException extends Exception{ public function fileInfo(){ return $this->getMessage(); } } try { print "open file"; throw new FileException('file does not exist'); } catch (Exception $e) { print $e -> fileInfo(); }
捕獲多個異常io
class FileException extends Exception{} //文件不存在的異常 class FileNotExistException extends FileException{} //文件權限異常 class FilePermissionException extends FileException{} function fileHandle(){ //文件不存在 throw new FileNotExistException('file does not exist'); //文件權限異常 throw new FilePermissionException('access denied'); //其餘異常 throw new FileException('other exception'); } try { fileHandle(); } catch (FileNotExistException $e) { echo $e -> getMessage(); }catch(FilePermissionException $e){ echo $e -> getMessage(); }catch(FileException $e){ echo $e -> getMessage(); }
全局異常處理function
<?php class FileException extends Exception{ //文件不存在 const FILE_NOT_EXIST = 1; //權限不夠 const FILE_PERMISSION = 2; } function fileHandle(){ //文件不存在 throw new FileException('FilenotExist',FileException::FILE_NOT_EXIST); //權限不夠 throw new FileException('FilePermission',FileException::FILE_PERMISSION); } try { fileHandle(); } catch (Exception $e) { switch ($e -> getCode()) { case FileException::FILE_NOT_EXIST: echo($e->getMessage()); break; case FileException::FILE_PERMISSION: echo ($e -> getMessage()); break; } }catch(Exception $e){ echo 'exception'; } ?> ------------------------------------------ <?php function defaultExceptionHandle($e){ printf("uncaught exception:%s in file %s on line %d",$e->getMessage(),$e->getFile(),$e->getLine()); } set_exception_handler('defaultExceptionHandle'); throw new Exception('tese......'); ?>