1.PHP错误处理1.语法错误2.运行时错误3.逻辑错误:没有提示错误,但是函数有错,最麻烦4.三级:通知/警告/致命错误(无法继续)5.错误报告显示:a.可以修改php.ini中的error_reporting项来限制错误报告的类型,如:error_reporting=E_ALL&~E_NOTICEb.只修改脚本中的错误显示,可以使用error_reporting(E_ALL&~E_NOTICE);(推荐)6、自定义错误报告:set_error_handler()可以传入预定的参数用于显示错误,如下:set_error_handler('reportError');$混乱=“”??;functionreportError($error_type,$error_message,$error_file,$error_line){global$mess;$mess.="错误级别为{$error_type}类型,错位信息{$error_message},在文件{$error_file},第{$error_line}行。
";}getType($a);回声“1111111
”;获取类型();回声“2222
”;回声$混乱;/*发生错误级别为8类型,错位信息未定义变量:a,文件F:\projects\Frame\FrameTest\BackEnd\regularExpression.php,第24行错误级别为2类型,错位信息gettype()期望在文件F:\projects\Frame\FrameTest\BackEnd\regularExpression.php的第26行中恰好有1个参数,0给定。*/7。记录错误日志a.在PHP.ini中将display_errors设置为Off,并将log_errors设置为Onb。自定义日志目录error_log="C:/XX/XX/php_error.log"c.也可以在脚本里面设置ini_set("display_errors","Off")或者ini_get2.PHP异常处理1.trycatch是集成的,中间不能有代码2.Exception是一个预定义的类system3.如果抛出异常对象,将异常对象交给catch中的类4.try中异常位置之后的代??码不再继续执行,而是直接到catch中执行try{echo"drive工作
”;thrownewException("汽车爆炸了累了!");}catch(Exception$e){//等价于Exception$e=newException('');echo$e->getMessage().'
';echo'换上备胎,继续工作
';}5.异常处理可以和错误处理一起使用set_error_handler('reportError');functionreportError($error_type,$error_message,$error_file,$error_line){if($error_type==E_WARNING){thrownewException("错误信息:{$error_message},错误文件:{$error_file},错误行{$错误行}");}}函数驱动器($a){echo$a;}try{echo"开车上班
";drive();//忘记传参,在自定义错误函数中触发警告错误,并抛出异常}catch(Exception$e){//等同于Exception$e=newException('');echo$e->getMessage().'
';echo"穿上备胎继续工作
";}6.自定义异常类a。异常类是所有异常的基类,没有具体定义异常处理方法(只有一些获取提示的方法)b.自定义异常类必须是系统类c的子类。如果继续Exception类,重写构造函数,别忘了调用父类构造函数初始化类BTExceptionextendsException{function__construct($message){parent::__construct($message);}functionmethod(){return"打开后备箱,取出工具,更换备胎";}}try{echo"开车上班
";thrownewBTException("汽车轮胎漏气了!");}catch(BTException$e){//等价于Exception$e=newException('');echo$e->getMessage().'
';echo$e->method().'
';echo"穿上备胎继续工作
";}7.捕获多个异常,注意:catch也可以是嵌套try,即:异常纠正时可能会出现其他异常}functionmethod(){返回“正确的异常1”;}}类Err2扩展异常{函数n__construct($message){parent::__construct($message);}functionmethod(){返回“正确的异常2”;}}类Err3扩展异常{function__construct($message){parent::__construct($message);}functionmethod(){return"正确异常3";}}$rand=rand(1,3);try{switch($rand){case1:thrownewErr1("Exception1occurred");case2:thrownewErr2("异常2发生");case3:thrownewErr3("异常3发生");}}catch(Err1$e){echo$e->getMessage().'
';echo$e->method().'
';}catch(Err2$e){echo$e->getMessage().'
';echo$e->method().'
';}catch(Err3$e){echo$e->getMessage().'
';echo$e->method().'
';}
