菜鸟级的php程序员,遇到下边的问题都会头大,小编为你整理一些常见的PHP错误与异常分析和解决办法。
错误报告关闭和打开
php.ini 的 display_errors = On 或者 Off
代码里 ini_set(‘display_errors’,1) 或者 0
错误报告级别
最佳实践
开发环境下打开错误报告。并且错误报告级别 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);
举例
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(); } }
文件异常类
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(); }
捕获多个异常
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(); }
全局异常处理
getCode()) { case FileException::FILE_NOT_EXIST: echo($e->getMessage()); break; case FileException::FILE_PERMISSION: echo ($e -> getMessage()); break; } }catch(Exception $e){ echo 'exception'; } ?> ------------------------------------------ getMessage(),$e->getFile(),$e->getLine()); } set_exception_handler('defaultExceptionHandle'); throw new Exception('tese......'); ?>