错误级别

Fatal Error:致命错误(脚本终止运行)E_ERROR //致命的运行错误,错误无法恢复,暂停执行脚本

E_CORE_ERROR //PHP启动时初始化过程中的致命错误

E_COMPILE_ERROR //编译时致命性错,就像由Zend脚本引擎生成了一个E_ERROR

E_USER_ERROR //自定义错误消息。像用PHP函数trigger_error(错误类型设置为:E_USER_ERROR)

Parse Error:编译时解析错误,语法错误(脚本终止运行)E_PARSE //编译时的语法解析错误

Warning Error:警告错误(仅给出提示信息,脚本不终止运行)E_WARNING //运行时警告 (非致命错误)。

E_CORE_WARNING //PHP初始化启动过程中发生的警告 (非致命错误) 。

E_COMPILE_WARNING //编译警告

E_USER_WARNING //用户产生的警告信息

Notice Error:通知错误(仅给出通知信息,脚本不终止运行)E_NOTICE //运行时通知。表示脚本遇到可能会表现为错误的情况.

E_USER_NOTICE //用户产生的通知信息。

错误显示级别

//错误级别

ERROR = E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_PARSE

error_reporting(E_ALL);//设置异常错误显示等级0为禁止错误

error_reporting(0);//禁用错误报告

error_reporting(E_ERROR | E_WARNING | E_PARSE);//报告运行时错误

error_reporting(E_ALL); //报告所有错误

error_reporting(E_ALL~E_NOTICE);//除去提醒处理

Try 和 catch

使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。

"catch" 代码块会捕获异常,并创建一个包含异常信息的对象。

try catch 捕捉不到fatal error致命错误

只有抛出异常才能被截获,如果异常抛出了却没有被捕捉到,就会产生一个fatal error

父类可以捕获子类抛出的异常

try{//业务代码

}catch(Exception $e){//捕获异常,输出错误信息

echo ‘Message: ‘ .$e->getMessage();

}

可以自定义异常类,当必须继承 Exception 类,,捕获 catch 先写子类(级别低的),后写父类(级别高的),try 中可以 嵌套 try{}catch(Exception$e){}

class customException extends Exception{public functionerrorMessage()

{//错误信息

$errorMsg = ‘错误行号 ‘.$this->getLine().‘ in ‘.$this->getFile().‘: ‘.$this->getMessage().‘ 不是一个合法的 E-Mail 地址‘;return $errorMsg;

}

}$email = "someone@example...com";try{//检测邮箱

if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)

{//如果是个不合法的邮箱地址,抛出异常

throw new customException($email); //throw - 里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"。

}

}catch (customException $e){//输出错误信息

echo $e->errorMessage();

}catch(Exception $e)

{//多个异常,先捕获子类的,父类放最后

echo $e->getMessage();

}

PHP异常处理函数

set_error_handler(error_function,error_types)

设置用户自定义的错误处理函数。该函数用于创建运行期间的用户自己的错误处理方法。该函数返回旧的错误处理程序,如果失败则返回 NULL。如果存在该方法,相应的error_reporting()就不能在使用了

error_function(error_level,error_message,error_file,error_line,error_context)

不仅可以接受函数,还可以接受 类的方法(公开的静态方法 及 公开的非静态方法 都可以),但需要以 数组形式 传递,数组的第一值为“类名”,第二个参数为“方法名”

参数说明:

error_level

必需的。规定用户自定义的错误的错误报告级别。必须是值数字。可能的错误报告级别详见下面的表格。

error_message

必需的。规定用户自定义的错误的错误消息。

error_file

可选。规定发生错误的文件名。

error_line

可选。规定发生错误的行号。

error_context

可选。规定指向活跃符号表中发生错误的数组。换句话说,error_context 将包含一个说明每个变量引发错误的存在范围的数组。

error_level  错误报告级别

2

E_WARNING

运行时非致命的错误。没有停止执行脚本。

8

E_NOTICE

运行时的通知。脚本发现可能是一个错误,但也可能在正常运行脚本时发生。

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())。

classApp{//error handler function

function customError($errno, $errstr, $errfile, $errline) {echo "Custom error: [$errno] $errstr
";echo "Error on line $errline in $errfile
";echo "Ending Script";die();

}

}//set error handler

set_error_handler(array("App","customError"));$test=2;//trigger error

if ($test > 1) {trigger_error("A custom error has been triggered");

}

register_shutdown_function(callback_function,parameter)

捕获PHP的错误:Fatal Error、Parse Error等,这个方法是PHP脚本执行结束前最后一个调用的函数,比如脚本错误、die()、exit、异常、正常结束都会调用。通过这个函数就可以在脚本结束前判断这次执行是否有错误产生,这时就要借助于一个函数:error_get_last();这个函数可以拿到本次执行产生的所有错误。error_get_last();返回的信息:

[type]           - 错误类型

[message] - 错误消息

[file]              - 发生错误所在的文件

[line]             - 发生错误所在的行

当前函数要在代码执行前执行,否则无法调用。函数没有返回值,如果传入的callback不是可调用的,那么将会产生一个 E_WARNING 级别的错误。

参数说明:

callback_function

待注册的中止回调,中止回调是作为请求的一部分被执行的,因此可以在它们中进行输出或者读取输出缓冲区。

parameter

可以通过传入额外的参数来将参数传给中止函数

register_shutdown_function(‘zyfshutdownfunc‘);functionzyfshutdownfunc()

{if ($error =error_get_last()) {echo ‘输出错误:register_shutdown_function: Type:‘ . $error[‘type‘] . ‘ Msg: ‘ . $error[‘message‘] . ‘ in ‘ . $error[‘file‘] . ‘ on line ‘ . $error[‘line‘] . ‘‘;

}

}

set_exception_handler(exception_function)

设置默认的异常处理程序,用在没有用try/catch块来捕获的异常,也就是说不管你抛出的异常有没有人捕获,如果没有人捕获就会进入到该方法中,并且在回调函数调用后异常会中止。返回之前定义的异常处理程序的名称,或者在错误时返回 NULL。 如果之前没有定义错误处理程序,也会返回 NULL。

exception_function 参数说明:规定未捕获的异常发生时调用的函数。该函数必须在调用 set_exception_handler() 函数之前定义。这个异常处理函数需要需要一个参数,即抛出的 exception 对象。

PHP ERROR_PHP 处理错误函数相关推荐

  1. 远程云服务器闪退_win系统远程桌面连接闪退、停留在正在配置远程会话无反应、提示身份验证错误函数不受支持的解决方法...

    win系统的安装越来越便捷,大多都用ghost一键安装,这就导致远程桌面连接云服务器时出现闪退.停留在正在配置远程会话无反应.提示身份验证错误函数不受支持等错误,网上的解决方法也是五花八门,但真正有用 ...

  2. PHP ERROR_php中的异常和错误浅析

    本文主要介绍了php中的异常和错误,分享给大家供大家参考学习,下面来一起看看详细的介绍: 一.异常与错误 异常是指程序运行中不符合预期情况以及与正常流程不同的状况.错误则属于自身问题,是一种非法语法或 ...

  3. Android NDK使用addr2line符号化得到错误函数名的问题

    一般Android NDK出现崩溃之后,我们会使用addr2line工具来进行符号化.如果你使用了C++11的一些特性,那么要注意了,有可能你将得到错误的函数名.我们公司是提供崩溃分析相关的服务的,采 ...

  4. 深度学习与TensorFlow

    深度学习与TensorFlow DNN(深度神经网络算法)现在是AI社区的流行词.最近,DNN 在许多数据科学竞赛/Kaggle 竞赛中获得了多次冠军. 自从 1962 年 Rosenblat 提出感 ...

  5. RTOS诊断和错误检查

    RTOS诊断和错误检查 RTOS diagnostics and error checking 查看RTOS显示系列 错误处理不太可能是任何用于嵌入式系统应用程序的操作系统的主要功能.这是资源限制的必 ...

  6. Udacity机器人软件工程师课程笔记(三十六) - GraphSLAM

    一.引入 GraphSLAM是解决完整的slam问题的slam算法.这意味着该算法将恢复整个路径和地图,而不仅仅是最近的姿势和地图.这种差异使它可以考虑当前姿势与先前姿势之间的依赖性.适用于我们的Gr ...

  7. 【机器学习基石笔记】八、噪声和错误

    噪声的来源: 1.noise in y 2.noise in x 在有noise的情况下,vc bound还会work么??? 之前,x ~ p(x)  现在 y ~ P( y | x ) 在hoef ...

  8. Django源码分析3:处理请求wsgi分析与视图View

    django源码分析 本文环境python3.5.2,django1.10.x系列 根据前上一篇runserver的博文,已经分析了本地调试服务器的大致流程,现在我们来分析一下当runserver运行 ...

  9. PHP错误日志,解决不显示不记录日志文件等疑难杂症

    2019独角兽企业重金招聘Python工程师标准>>> PHP不显示错误日志,适用于 Ningx + php-fpm +PHP 以及 Apache +mod/cgi+ PHP 方式加 ...

最新文章

  1. stream map方法_Java Stream中map和flatMap方法
  2. Linux下用户组、文件权限详解
  3. WebService大讲堂之Axis2(6):跨服务会话(Session)管理
  4. tensorflow系列之1:加载数据
  5. python性能分析工具模块_Python Profilers 分析器
  6. 数字图像处理--霍夫变换直线检测及原理理解
  7. 抖音封禁超万账号;小米回应手机壳含毒;百度网盘封杀非官方版 | CSDN极客头条
  8. python之list与set的区别
  9. excel VB代码
  10. web安全day20:今天讲清楚漏洞和木马的区别,最后一个实验演示通过445端口控制服务器
  11. BMP/JPG/PNG/GIF/有损压缩和无损压缩【转载整理】
  12. 投稿Springer旗下某中科院1区TOP期刊时间记载
  13. 写给理工科人看的乐理(一)声学基础
  14. win10 excel和ppt变成英文了,word正常,怎么解决?
  15. 如何用css实现彩带样式,CSS3 彩色丝带
  16. TTS实现文字语音朗读
  17. 第一期:[开眼界] Android P预览版都有哪些设计新鲜事
  18. 分销系统|分销商城小程序开发方式有什么?
  19. 啊哈算法dfs-bfs
  20. 解决死锁问题的基本方法

热门文章

  1. Spring&Quartz集成自定义注释
  2. 将py文件打包成exe可执行文件
  3. matlab中prprob,pr-sr-master
  4. multiprocessing.queue取数据要加锁么_干货 | 小程序多页面接口数据缓存
  5. 【WebRTC---入门篇】(八)WebRTC核心之RTP Medio 媒体控制与数据统计
  6. C语言标识符、关键字和注释
  7. linux 提示符 异常,linux终端提示符异常 bash-4.1$
  8. redis 内存不足 排查_排查redis占用内存达90%以上
  9. xp定时关机软件_好用又免费的电脑定时工具,不用得后悔
  10. ps一点等于多少厘米_企业展厅设计关于展台你了解多少?