美工统筹SEO,为企业电子商务营销助力!
PHP中罕见的毛病与很是处置总结大全
一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-26 09:01:51 阅读数: 143
媒介
当咱们开辟法式时,法式呈现题目是很罕见的,当呈现了很是与毛病咱们该若何处置呢?本文将详细给大师先容PHP毛病与很是处置的相干内容,分享出来供大师参考进修,上面话未几说了,来一路看看详细的先容:
一、PHP毛病处置
1.语法毛病
2.运转时毛病
3.逻辑毛病:不提醒毛病,但功效毛病,最费事
4.三种级别:notice/warning/fatal error(没法持续履行)
5.毛病报告显现:
a.能够在php.ini中点窜error_reporting名目,以限制毛病报告范例,如:error_reporting=E_ALL & ~E_NOTICE
b.只点窜某个剧本内的毛病显现,能够操纵error_reporting(E_ALL & ~E_NOTICE);
(保举)
6.自界说毛病报告:set_error_handler()
能够传入用以显现毛病的预约参数,以下:
set_error_handler("reportError"); $mess=""; function reportError($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 "1111111<br>"; getType(); echo "2222<br>"; echo $mess; /*产生毛病级别为8范例,错位信息Undefined variable: a,在文件F:projectsFrameFrameTestBackEndegularExpression.php中,第24行。 产生毛病级别为2范例,错位信息gettype() expects exactly 1 parameter, 0 given,在文件F:projectsFrameFrameTestBackEndegularExpression.php中,第26行。*/
7.记实毛病日记
a.将PHP.ini中display_errors设置为Off,log_errors设置为On
b.自界说日记目次error_log="C:/XX/XX/php_error.log"
c.也能够操纵ini_set("display_errors","Off")
或ini_get在剧本外部停止设定
二、PHP很是处置
1.try catch一体的,中间不能有任何代码
2.Exception是体系预界说的类
3.若是有很是工具抛出,就将很是工具给catch中的类
4.try中产生很是地位后的代码不再持续履行,而是间接转到catch中履行
try{ echo "开车下班<br>"; throw new Exception("车子爆胎了!"); }catch(Exception $e){//相称于Exception $e = new Exception(""); echo $e->getMessage()."<br>"; echo "换上备胎,持续下班<br>"; }
5.很是处置能够共同毛病处置一路操纵
set_error_handler("reportError"); function reportError($error_type,$error_message,$error_file,$error_line){ if($error_type==E_WARNING){ throw new Exception("毛病信息:{$error_message},毛病文件:{$error_file},毛病行数{$error_line}"); } } function drive($a){ echo $a; } try{ echo "开车下班<br>"; drive();//健忘传参,触发自界说毛病函数中正告性毛病,抛出很是 }catch(Exception $e){//相称于Exception $e = new Exception(""); echo $e->getMessage()."<br>"; echo "换上备胎,持续下班<br>"; }
6.自界说很是类
a.Exception类是一切很是的基类,不界说详细很是的处置体例(只需些获得提醒的体例)
b.自界说的很是类必须是体系类的子类
c.若是持续了Exception类,重写了机关体例,不要健忘挪用父类机关体例停止初始化
class BTException extends Exception { function __construct($message){ parent::__construct($message); } function method(){ return "翻开后备箱,拿收工具,换备胎"; } } try{ echo "开车下班<br>"; throw new BTException("车子爆胎了!"); }catch(BTException $e){//相称于Exception $e = new Exception(""); echo $e->getMessage()."<br>"; echo $e->method()."<br>"; echo "换上备胎,持续下班<br>"; }
7.捕获多个很是,注:try中还可嵌套try
class Err1 extends Exception { function __construct($message){ parent::__construct($message); } function method(){ return "改正毛病1"; } } class Err2 extends Exception { function __construct($message){ parent::__construct($message); } function method(){ return "改正毛病2"; } } class Err3 extends Exception { function __construct($message){ parent::__construct($message); } function method(){ return "改正毛病3"; } } $rand=rand(1,3); try{ switch($rand){ case 1: throw new Err1("产生毛病1"); case 2: throw new Err2("产生毛病2"); case 3: throw new Err3("产生毛病3"); } }catch(Err1 $e){ echo $e->getMessage()."<br>"; echo $e->method()."<br>"; }catch(Err2 $e){ echo $e->getMessage()."<br>"; echo $e->method()."<br>"; }catch(Err3 $e){ echo $e->getMessage()."<br>"; echo $e->method()."<br>"; }
总结
以上便是这篇文章的全数内容了,但愿本文的内容对大师的进修或任务能带来必然的赞助,若是有疑难大师能够留言交换,感谢大师对网页设想的撑持。