php 中的错误处理机制

php 里有一套错误处理机制,可以使用 set_error_handler 接管 php 错误处理,也可以使用 trigger_error 函数主动抛出一个错误。

set_error_handler() 函数设置用户自定义的错误处理函数。函数用户创建运行期间用户自己的错误处理方法。它需要先创建一个错误处理函数,然后设置错误级别。

语法:

set_error_handler(error_function, error_types)  

参数:

error_function:规定发生错误时运行的函数。必需。

error_types:规定在哪个错误报告级别会显示用户自定义错误。可选。默认为 “E_ALL”。

使用该函数,会完全绕过标准 php 错误处理函数(除非在错误处理函数中返回 false)。

示例:

function customError($errno, $errstr, $errfile, $errline)
{
    echo "错误代码:[$errno] $errstr" . PHP_EOL;
    echo "错误所在代码行:$errline 文件 $errfile" . PHP_EOL;
    // die;
}
set_error_handler("customError");

5/0;

  

输出:

错误代码:[2] Division by zero
错误所在代码行:15 文件 /xxx/test.php

  

在这里有一个需要说明的是:php 中的错误和异常是不一样的。php 中的错误默认是无法通过 try...catch 捕获的,如果我们想要捕获,可以在 error handler 里面捕获错误之后抛出一个异常。

我们也可以在某些地方使用 restore_error_handler 取消自定义的错误处理。

对于 fatal error:

如果我们也想对其进行一些处理,php 也提供了 register_shutdown_function,这个函数会在 php 程序终止或者 die 时触发一个函数。

对于 parse error,我们可以修改 php.ini 添加配置:

log_errors=On

error_log=usr/log/php.log

总结:

在 php 中,错误和异常是两个不同的概念,这种设计从根本上导致了 php 的异常和其他语言相异。Java 中,异常是错误唯一的报告方式。而 php 中异常绝大部分必须通过某种方法手动抛出,才能被捕获到,是一种半自动化的异常处理机制。

无论是错误还是异常,都可以使用 handler 接管系统已有的处理机制。

原文地址:https://www.cnblogs.com/eleven24/p/8999066.html

时间: 2024-09-30 23:51:41

php 中的错误处理机制的相关文章

javascript中的错误处理机制

前面的话 错误处理对于web应用程序开发至关重要,不能提前预测到可能发生的错误,不能提前采取恢复策略,可能导致较差的用户体验.由于任何javascript错误都可能导致网页无法使用,因此作为开发人员,必须要知道何时可能出错,为什么会出错,以及会出什么错.本文将详细介绍javascript中的错误处理机制 error对象 error对象是包含错误信息的对象,是javascript的原生对象.当代码解析或运行时发生错误,javascript引擎就会自动产生并抛出一个error对象的实例,然后整个程序

php中的错误处理机制

1.如果没有错误处理机制会怎样? 案例1: <?php  $fp=fopen("aa.txt","r");//打开文件,没有验证,是否存在该文件?  echo "ok";   ?> 结果: Warning: fopen(aa.txt) [function.fopen]: failed to open stream: No such file or directory in E:\Software_default\wamp_wwwroo

php中错误处理机制

php中,异常处理机制是有限的,无法自动抛出异常,必须手动进行,并且内置异常有限. php把许多异常看作错误,这样就可以把这些异常想错误一样用set_error_handler接管,进而主动抛出异常. 比如以下warning类型的错误是捕获不到的 :   Warning: Division by zero in 1 try{ 2 $a = 5/0; 3 }catch (Exception $e){ 4 echo '错误信息:',$e->getMessage(); 5 } 使用set_error_

asp.net 中的错误机制

转自:http://www.cnblogs.com/freshman0216/archive/2008/06/14/1218721.html 对Web应用程序来说,发生不可预知的错误和异常在所难免,我们必须为Web程序提供错误处理机制.当错误发生时,我们必须做好两件事情:一是将错误信息记录日志,发邮件通知网站维护人员,方便技术人员对错误进行跟踪处理:二是以友好的方式提示最终用户页面发生了错误,而不能将未处理的错误信息显示给用户.      让我们想想,ASP.NET为我们提供了几种错误处理机制?

PHP中的错误处理、异常处理机制

PHP中的错误处理.异常处理机制 在编写php程序时,错误处理是一个重要的部分.如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门 例: <?php $a = fopen('test.txt','r'); //这里并没有对文件进行判断就打开了,如果文件不存在就会报错 ?> 那么正确的写法应该如下: <?php if(file_exists('test.txt')){ $f=fopen('test.txt','r'); //使用完后关闭 fclose($f); } ?&

PHP中的错误处理、异常处理机制详解

在编写PHP程序时,错误处理是一个重要的部分.如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门 例: <?php $a = fopen('test.txt','r'); //这里并没有对文件进行判断就打开了,如果文件不存在就会报错 ?> 那么正确的写法应该如下: <?php if (file_exists('test.txt')) { $f = fopen('test.txt', 'r'); // 使用完后关闭 fclose($f); } ?> 一.PHP错误

转载 PHP中的错误处理、异常处理机制

在编写php程序时,错误处理是一个重要的部分.如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门 例: <?php $a = fopen('test.txt','r'); //这里并没有对文件进行判断就打开了,如果文件不存在就会报错 ?> 那么正确的写法应该如下: <?php if(file_exists('test.txt')){ $f=fopen('test.txt','r'); //使用完后关闭 fclose($f); } ?> 一.PHP错误处理的三种方

Swift中的错误处理

前言 任何代码都会发生错误,这些错误有些是可以补救的,有些则只能让程序崩溃.良好的错误处理能够让你的代码健壮性提高,提高程序的稳定性. 本文的Swift版本:Swift 3 Objective C 返回nil 如果出错了,就返回空是Objective C中的一种常见的处理方式.因为在Objective C中,向nil发送消息是安全的.比如: - (instancetype)init { self = [super init]; if (self) { } //如果初始化失败,会返回nil ret

iOS开发中xcode错误和异常处理

在开始这个的内容之前,我想先阐明两个在很多时候被混淆的概念,那就是异常 (exception) 和错误 (error). 在 Objective-C 开发中,异常往往是由程序员的错误导致的 app 无法继续运行,比如我们向一个无法响应某个消息的 NSObject 对象发送了这个消息,会得到 NSInvalidArgumentException 的异常,并告诉我们 "unrecognized selector sent to instance":比如我们使用一个超过数组元素数量的下标来试