一.php毛病处置惩罚的三种体式格局
A:简朴的die()语句
等价于exit();
B:自定义毛病和毛病触发器
1.毛病处置惩罚器(自定义毛病,平常用于语法毛病处置惩罚)
建立肯定义毛病函数(处置惩罚器),该函数必需有才能处置惩罚最少两个参数(error_level和error_message),然则能够接收最多五个参数(erroe_file,error_line,error_context)
语法:
function error_function($error_level,$error_message,$error_fiel,$error_line,$error_context) //建立好后还须要改写一个set_error_handler()函数 set_error_handler(‘error_function,E_WARNING’)//这里error_function对应上面建立的自定义处置惩罚器名,第二个参数为运用自定义毛病处置惩罚器的毛病级别。
毛病级别:
这些毛病报告级别是毛病处置惩罚顺序旨在处置惩罚的毛病的差别的范例:
值 |
常量 |
形貌 |
2 |
E_WARNING |
非致命的 run-time 毛病。不停息剧本实行。 |
8 |
E_NOTICE |
Run-time 关照。剧本发明能够有毛病发作,但也能够在剧本一般运行时发作。 |
256 |
E_USER_ERROR |
致命的用户生成的毛病。这相似于顺序员运用 PHP 函数 trigger_error() 设置的 E_ERROR。 |
512 |
E_USER_WARNING |
非致命的用户生成的正告。这相似于顺序员运用 PHP 函数 trigger_error() 设置的 E_WARNING。 |
1024 |
E_USER_NOTICE |
用户生成的关照。这相似于顺序员运用 PHP 函数 trigger_error() 设置的 E_NOTICE。 |
4096 |
E_RECOVERABLE_ERROR |
可捕捉的致命毛病。相似 E_ERROR,但可被用户定义的处置惩罚顺序捕捉。(拜见 set_error_handler()) |
8191 |
E_ALL |
一切毛病和正告,除级别 E_STRICT 之外。(在 PHP 6.0,E_STRICT 是 E_ALL 的一部份) |
2.毛病触发器(平常用于处置惩罚逻辑上的毛病)
需求:比如要接收一个岁数,假如数字大于120,就认为是个毛病
传统要领:
<?php if($age>120){ echo(’岁数毛病’); exit(); } ?>
运用触发器:
<?php if($age>120){ trigger_error(‘岁数毛病’); } //自定义处置惩罚器 function myerror(¥error_level,¥error_message){ echo ‘error text’; } //同时须要转变体系默许的处置惩罚器函数 set_error_handler(‘myerror’,E_USER_WARNING); ?>
C:毛病日记
默许的依据php.ini中error_log设置,PHP向服务器的毛病纪录体系或文件发送毛病纪录。经由过程运用error_log()函数能够向文件或许长途目的地发送毛病纪录。
语法:
error_log(error[,type,destination,headers])
Type部份平常用3,示意在文件背面追加毛病信息,而不会掩盖原内容destination示意目的地,即寄存的文件或长途目的地
如:
error_log(“$error_info”,3,”errors.txt”);
二. php 非常处置惩罚
1.基础语法
<?php try{ //能够出现非常或许毛病的代码 //catch 捕捉非常 }catch(Exception $e){ //对非常处置惩罚,要领 //1.本身处置惩罚 //2.不处置惩罚,能够再次抛出throw new Exception(‘XXX’); } ?>
2.处置惩罚顺序应当包括:
1.try—运用非常的函数应当位于‘try’代码块内,假如没有触发非常,则代码将照旧继承实行。然则假如非常被触发,或抛出一个非常;
2.throw — 这里划定怎样触发非常,每一个“throw”必需对应最少一个‘catch’;
3.catch — ‘catch’代码块会捕捉非常,并建立一个包括非常信息的对象。
eg:
<?php /** * 建立可抛出一个非常的函数 */ function checkNum($number) { if ($number > 1) { throw new Exception("Value must be 1 or below"); } return true; } // 在 "try" 代码块中触发非常 try { checkNum(2); // 假如非常被抛出,那末下面一行代码将不会被输出 echo 'If you see this, the number is 1 or below'; } catch (Exception $e) { // 捕捉非常 echo 'Message: ' . $e->getMessage(); } ?>
例子诠释:
上面的代码抛出了一个非常,并捕捉了它:
建立 checkNum() 函数,它检测数字是不是大于 1,假如是,则抛出一个非常。
在 "try" 代码块中挪用 checkNum() 函数。
checkNum() 函数中的非常被抛出。
"catch" 代码块接收到该非常,并建立一个包括非常信息的对象 ($e)。
经由过程从这个 exception 对象挪用 $e->getMessage(),输出来自该非常的毛病音讯。
非常的划定规矩:
须要举行非常处置惩罚的代码应当放入try代码块内,以便捕捉潜伏的非常
每一个try或许throw代码块必需最少一个对应的catch代码块
运用多个catch代码块能够捕捉差别品种的非常
能够在try代码内的catch代码块中再次输出(re_throw)非常。
总结:简而言之,假如抛出了非常,就必需捕捉他。
以上就是php中毛病及非常处置惩罚的引见(代码示例)的细致内容,更多请关注ki4网别的相干文章!