1、Php错误报告级别
1 E_ERROR 致命的运行错误。错误无法恢复,暂停执行脚本。
2 E_WARNING 运行时警告(非致命性错误)。非致命的运行错误,脚本执行不会停止。
4 E_PARSE 编译时解析错误。解析错误只由分析器产生。
8 E_NOTICE 运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)
error_reporting = E_ALL & ~E_NOTICE
2、自定义php错误报告方式
set_error_handler("myerrorfun");
$mess ="";
function myerrorfun($error_type,$error_message,$error_file,$error_line){
global $mess;
$mess.="发生错误级别为{$error_type}类型、错误消息<b>{$error_message}</b>,在文件夹{$error_file},第{$error_line}行。<br>";
}
getType($a);
echo"$mess";
显示为:发生错误级别为8类型、错误消息Undefined variable: a,在文件夹C:\AppServ\www\index.php,第9行。
set_error_handler($_type,$_message,$_errfile,$_errline) 函数设置用户自定义的错误处理程序,然后触发错误
3、php记录错误日志
log_errors = on 开启php日志
error_log =syslog 将php日志写到系统上去。
error_log = “c:/lamp/php_error.log”;自已指定一个存放目录、与上面相斥
ini_set(“log_errors”,“on”); 在php开发文件里设置
try{
echo"开始";
run();
}catch(Exception $e){
echo$e->getMessage()."<br>";
}
//当try{}里面不成功就抛出catch里面的异常
4、自定义异常类
//自定义异常类、必须是系统类Exception的子类
//如果继承Exception类、重写了构造方法、一定要调一下父类中被覆盖的方法/
class MyBtException extends Exception{
function__construct($mess){
parent::__construct($mess);
}
functionchangBt(){
echo"换个备胎";
}
}
try{
throw new MyBtException("车子胞胎");
echo"路况很好!";
}catch(MyBtException $e){
Echo $e->getMessage()."<br>";
$e->changBt()."<br>";
}
5、自定义多个异常类
//写出对应这个异常解决方法, 就是一下正常类的结构
class MyBtException extends Exception{
function__construct($mess) {
parent::__construct($mess);
}
functionchangBt() {
echo"换上备胎!";
}
}
class WcException extends Exception {
functionpro() {
echo"去公厕<br>";
}
}
class NoException extends Exception {
functionpro() {
echo"买面色凑合一下!<br>";
}
}
Class FlException extends Exception {
functionpro() {
echo"走小路!<br>";
}
}
class Dm {
function gowc($bj) {
if(!$bj){
throw new WcException("马桶不好用了");
}
echo"哈哈,事儿办的很成功!<br>";
}
function eat($time) {
if(!$time){
thrownew NoException("起来晚了,早餐没了!");
}
echo"吃的很好!<br>";
}
function dri($dz) {
if(!$dz){
throw new MyBtException("爆胎了");
}
echo"车开的不错!<br>";
}
function run($yu) {
if(!$yu){
throw new FlException("天下雪了, 高速封路了");
}
echo"高速很好走!<br>";
}
}
echo "早上起床<br>";
try{
$dm =new Dm();
// 1. 上厕所 (马桶不好用了),去公厕
$dm-> gowc(true);
// 2. 吃早餐 (没有早点),买面包
$dm-> eat(true);
//3. 开车上班 (爆tai) 换下
$dm->dri(true);
//4. 上高速 (下雪) 小路
$dm->run(false);
} catch(MyBtException $e) { // Exception $e = newException('');
echo$e->getMessage()."<br>";
//自定义类中的解决方法调用,解决了问题
$e->changBt()."<br>";
try {
}catch(Exception$e) {
}
} catch(NoException $e) {
echo$e->getMessage()."<br>";
$e->pro();
} catch(WcException $e) {
echo$e->getMessage()."<br>";
$e->pro();
} catch(Exception $e) {
echo$e->getMessage()."<br>";
//$e->pro();
}
echo"到公司开始工作<br>";
本文出自 “Linux狱长” 博客,请务必保留此出处http://sswqzx.blog.51cto.com/2494644/1968854