菜鸟级的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......');
?>