PHP ERROR_PHP 处理错误函数

错误级别

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 对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php接收文件,如何通过php 发送与接收流文件

php 发送与接收流文件sendStreamFile.php 把文件以流的形式发送receiveStreamFile.php 接收流文件并保存到本地sendStreamFile.php<?php /** php 发送流文件* param String $url 接收的路径* param String $file 要发送的文件* return boolean*/function sendStreamFile($u…

elasticsearch和php,快速开始 | Elasticsearch-PHP | Elastic

快速开始edit这一节会概述一下客户端以及客户端的一些主要方法的使用规则。在 composer.json 文件中引入 elasticsearch-php&#xff1a;{"require": {"elasticsearch/elasticsearch": "~6.0"}}用 composer 安装客户端&#xff1a;curl -s http:…

spring aop组件_安全性中的Spring AOP –通过方面控制UI组件的创建

spring aop组件以下文章将显示在我参与的一个项目中&#xff0c;我们如何使用Spring的AOP来介绍一些与安全性相关的功能。 这样的概念是&#xff0c;为了使用户能够看到某些UI组件&#xff0c;他需要具有一定级别的安全特权。 如果不满足该要求&#xff0c;则不会显示UICompone…

使用Spring Boot构建RESTFul服务

每个人都在谈论微服务&#xff0c;例如WSO2微服务框架 &#xff0c; Spring Boot等。由于我已经很长时间没有从事任何与Spring相关的项目了&#xff0c;所以我想到了使用Spring Boot实现一个简单的RESTFul服务。 因此&#xff0c;我从Spring文档开始。 这很简单。 您可以使用“…

php分页操作,PHP实现适用于文件内容操作的分页类

本文实例为大家分享了PHP实现文件内容操作的分页类&#xff0c;强调一下只针对文件的操作&#xff0c;供大家参考&#xff0c;具体内容如下class StrPage {private $current; //当前页private $file; //操作文件private $totalPage; //总的页数private $url; //传递的参数priva…

php imagemagick 文档,调用ImageMagick的PHP函数中文文档

bool imagick_writeimage([source image handle],[new name & filetype]) 写图片 UN KNOW USE imagick_writeimages new_handle imagick_clonehandle([image handle]) 复制出新句柄 image_handle imagick_image2blob([blob handle]) 将数据流数据转换成为image数据 ima…

java.util接口_Java 8中java.util.function包中的谓词和使用者接口

java.util接口在上一篇文章中&#xff0c;我写了关于Function接口的内容 &#xff0c;它是java.util.package的一部分。 我还提到了Predicate接口&#xff0c;它是同一包的一部分&#xff0c;在这篇文章中&#xff0c;我将向您展示如何使用Predicate和Consumer接口。 让我们看一…

php datetime 对象,PHP DateTime 对象和 Date 函数的 Demo

DateTime对象//设置时间时区date_default_timezone_set("PRC");$dateFormat "Y-m-d";$dateTimeFormat "Y-m-d H:i:s";//获取当前时间$date new DateTime();echo $date->format($dateTimeFormat) . "\n";//时间2015-01-01加上7年…

将Swagger与Spring Boot REST API集成

在上一篇文章中&#xff0c;我谈到了我使用Spring Boot创建RESTFul Services的经验。 在创建REST API时&#xff0c;正确的文档是其中的必需部分。 昂首阔步是什么&#xff1f; Swagger &#xff08;Swagger 2&#xff09;是用于描述和记录REST API的规范。 它指定了REST Web…

php滴滴平台接口,图片服务API文档

简介滴滴云图片服务API提供标准的轻量级无状态HTTP接口&#xff0c;支持用户对数据的全方位管理。接口概览API描述图片信息获取文件的基本信息&#xff0c;包括长度、宽度、文件大小、格式。图片旋转将图片按顺时针旋转。图片模糊对图片进行模糊操作。图片缩放将图片缩小或者放…

drools。drools_Drools Planner重命名为OptaPlanner:宣布www.optaplanner.org

drools。drools我们很自豪地宣布&#xff0c;从版本6.0.0.Beta1开始&#xff0c;将Drools Planner重命名为OptaPlanner。 我们也很高兴推出其新网站&#xff1a; www.optaplanner.org。 OptaPlanner优化了业务资源的使用。 每个组织都面临计划方面的问题&#xff1a;以有限的有…

php gridview,PHP编程:yii2-GridView在开发中常用的功能及技巧总结

《PHP编程&#xff1a;yii2-GridView在开发中常用的功能及技巧总结》要点&#xff1a;本文介绍了PHP编程&#xff1a;yii2-GridView在开发中常用的功能及技巧总结&#xff0c;希望对您有用。如果有疑问&#xff0c;可以联系我们。相关主题&#xff1a;YII框架数据网格或者说 Gr…

Spring Boot – spring.config.name –案例研究

当必须在不同配置中使用相同的应用程序代码时&#xff0c;外部化Spring Boot应用程序属性会很有用。 如果spring.config.location配置远离源代码&#xff08;无论如何spring.config.location被认为是最佳实践&#xff09;&#xff0c; spring.config.location环境属性可以用于指…

java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

JSP九大内置对象JSP内置对象是Web容器创建的一组对象&#xff0c;不使用new关键就可以使用的内置对象。int[] value{60,70,80};for(int i:value){out.println(i);}%>Web程序的请求响应模式用户发送请求(request)服务器给用户响应(response)out对象&#xff1a;out对象是JspW…

java中接口文件创建_功能接口简介–在Java 8中重新创建的概念

java中接口文件创建世界各地的所有Java开发人员都将至少使用以下接口之一&#xff1a;java.lang.Runnable&#xff0c;java.awt.event.ActionListener&#xff0c;java.util.Comparator&#xff0c;java.util.concurrent.Callable。 声明的接口之间有一些共同的特征&#xff0c…

java手动注册filter,SpringBoot如何注册Servlet、Filter、Listener的几种方式

在Servlet 3.0之前都是使用web.xml文件进行配置&#xff0c;需要增加Servlet、Filter或者Listener都需要在web.xml增加相应的配置。Servlet 3.0之后可以使用注解进行配置Servlet、Filter或者Listener&#xff1b;springboot也提供了使用代码进行注册Servlet、Filter或者Listene…

Java命令行界面(第12部分):CLAJR

第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 &#xff08;CLAJR&#xff09;。 该“库”是单个Java源文件&#xff08; CLAJR-0.9.java &#xff09;&#xff0c; 可从SourceForge下载 。 CLAJR的主页当前显示2006年版权日期&#xff…

php xml相关函数方法,php中对xml读取的相关函数的介绍一

对象 XML解析函数 描述元素 xml_set_element_handler() 元素的开始和结束字符数据 xml_set_character_data_handler() 字符数据的开始外部实体 xml_set_external_entity_ref_handler() 外部实体出现未解析外部实体 xml_set_unparsed_entity_decl_handler() 未解析的外部实体出现…

java调用oracle的函数,从Java调用Oracle函数

我有以下功能规格&#xff1a;FUNCTION FUNC_GET_SOMETHING_FROM_DATABASE ( IN_parameter1 IN VARCHAR2,IN_parameter2 IN VARCHAR2,IN_parameter3 IN VARCHAR2,IN_parameter4 IN VARCHAR2,IN_parameter5 IN VARCHAR2,IN_parameter6 IN VARCHAR2)RETURN REFCURTYP;以下是我在J…

specs.4.8.gz_使用Specs2和客户端API 2.0进行富有表现力的JAX-RS集成测试

specs.4.8.gz毫无疑问&#xff0c; JAX-RS是一项杰出的技术。 即将发布的规范JAX-RS 2.0带来了更多的强大功能&#xff0c;尤其是在客户端API方面。 今天的帖子的主题是JAX-RS服务的集成测试。 有很多优秀的测试框架&#xff0c;例如REST&#xff0c;可以确保提供帮助&#xff…