PHP错误及异常
让用户看到错误:
1, 别有用心的人会有攻击的可能性
2, 非专业用户,会觉得你网站就是狗屎
解决办法,把错误让用户看不到,不显示即可。
1,在开发时错误必须要显示
2,在运营时错误必须不显示
3,运营时虽然不让看到,但是将错误保存起来
这三大类错误会产生十几种不同的错误情况。
E_ALL //所有信息 值:6143
E_ERROR //致命的运行时错误 值:1
E_RECOVERABLE_ERROR//接近致命的运行时错误,若未被捕获则视同 E_ERROR 值:4096
E_WARNING //运行时警告(非致命性错误) 值:2
E_PARSE //编译时解析错误 值:4
E_NOTICE //运行时提醒(经常是bug,也可能是有意的) 值:8
E_STRICT //编码标准化警告(建议如何修改以向前兼容) 值:2048
E_CORE_ERROR //PHP启动时初始化过程中的致命错误 值:16
E_CORE_WARNING //?PHP启动时初始化过程中的警告(非致命性错) 值:32
E_COMPILE_ERROR //?编译时致命性错 值:64
E_COMPILE_WARNING //编译时警告(非致命性错) 值:128
E_USER_ERROR //用户自定义的致命错误 值:256
E_USER_WARNING //?用户自定义的警告(非致命性错误) 值:512
E_USER_NOTICE //用户自定义的提醒(经常是bug) 值:1024
错误的处理方式:
①直接在错误前面加上@抑制错误符号
@错误代码;//这种方式的效率很低它等同于下边
因为:@相当于:
error_reporting(0); //关闭错误
错误代码; //执行代码
error_reporting(1); //开启错误
②修改PHP.ini中的错误显示 display_errors = on //直接改成OFF
③修改PHP.ini中的error_reporting
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
; - Show all errors except for notices and coding standards warnings
;
error_reporting = E_ALL & ~E_NOTICE //PHP.INI中302行..
开启错误日志的步骤:
首先打开配置文件php.ini1,display_error = Off; //309行
2,log_errors = On; //319行3,error_log = 'D:/www/logs/err.log' //363行
1),不填 apache默认错误日志文件位置
2),syslog 存到系统的日志文件中如果是Window则可以在"我的电脑"-->"管理"-->"日志",如果是linux则在/var/log下面
3),具体路径(我们自己制定)
如果我是用的虚拟主机怎么?管理员不准我碰php.ini文件怎么办那?
我们可以在代码里面使用代码来完成
1,ini_set(‘php.ini中的参数’,’值’); //指定的参数只能在当前的脚本中生效
2,ini_get(); 可以获得php某个参数的值
<?php
ini_set('error_reporting','E_WARNING'); //制定参数的值//注意:代码只能在当前脚本中生效...
ini_get('error_reporting');
?>
PHP异常
异常,说白了就是指当产生错误或者不确定因素时,改变顺序,进行处理这个脚本
1 2 try{ 3 throw new Exception(); //如果抛出,下面一部份则不再运行 4 5 }catch(exception $e){ 6 7 echo $e->getMessage(); 8 9 } 10 echo ‘脚本剩下内容’; //未出现崩溃则运行 11
系统自带异常成员的方法:
getMessage()
getCode()
getFile()
getLine()
getTrace() //返回代码跟踪的数组
getTraceAsString();//已格式化的信息
可重载的方法__toString();
#---------------------------------
自定义异常类
1,新建一个类继承原有异常类
2,创建一个构造方法,继承原有构造方法
3,使用__toString方法输出异常
4,创建一个测试异常的类
5,判断异常情况并处理
6,使用
1 <?php 2 class exception{ 3 protected $message='Unknown exception'; //异常信息 4 protected $code=0; //用户自定义的异常代码 5 protected $file; //发生异常的文件名 6 protected $line; //发生异常的代码行号 7 8 function _construct($message=null,$code=0); 9 final function getMessage(); //返回异常信息 10 final function getCode(); //返回异常代码 11 final function getFile(); //返回异常文件名 12 final function getLine(); //返回发生异常的代码行号 13 final function getTrace(); //backtrace()数组 14 final function gettraceAsString(); //已格式化成字符串的getTrace()信息 15 16 //可以重载的方法 17 function _toString(); //可输出的字符串 18 } 19 ?>
评论 (0)