自定义错误处理器

什么叫错误处理器?

  就是一旦发生错误,用来处理该错误的一种“机器” --其实就是一个函数。

自定义错误处理,就是指:

  让系统不要去处理错误,而完全由我们(开发者)来对错误处理:显示和记录。

做法,其实很简单,就两步:

第一步:

  设定要用于处理错误的函数名!

  set_error_handler("f1");

第二步:

  去定义该函数

  function f1()

  {

    //这里可以任意写代码:自然正常是去显示错误报告和记录错误日志。

  }

代码: 

<?php
//第一步:定义要作为错误处理的函数名
set_error_handler("my_error_handler");

//第二步:定义该函数
//该函数需要定义4个形象,分别代表:
//$errCode :代表错误代号(级别)
//$errMsg:  代表错误信息内容
//$errFile: 代表发生错误的文件名
//$errLine: 代表发生错误的行号
//注意,该函数我们不要在程序中调用,而是,一发生错误就会被自动调用
//而且会传入该4个实参数据
function my_error_handler($errCode,$errMsg,$errFile,$errLine)
{
    $str = "";
    $str .= "<p><font color=‘red‘>大事不好,发生错误:</font>";
    $str .= "<br />错误代号为:".$errCode;
    $str .= "<br />错误内容为:".$errMsg;
    $str .= "<br />错误文件为:".$errFile;
    $str .= "<br />错误行号为:".$errLine;
    $str .= "<br />发生时间为:".date("Y-d-m H:i:s");
    $str .= "</p>";
    echo $str;//输出该“构建”的错误完整处理结果
    //也可以将该内容“写入”到某个文件中去,也就是所谓记录错误日志!
}

案例一:

echo $v1;   //使用不存在的变量

运行结果:

  大事不好,发生错误:
  错误代号为:8
  错误内容为:Undefined variable: v1
  错误文件为:F:\demo\wuxianji\index.php
  错误行号为:28
  发生时间为:2018-07-03 06:23:56

案例二:

echo C1;    //使用不存在的常量

运行结果:

  大事不好,发生错误:
  错误代号为:8
  错误内容为:Use of undefined constant C1 - assumed ‘C1‘
  错误文件为:F:\demo\wuxianji\index.php
  错误行号为:28
  发生时间为:2018-07-03 06:28:27

  C1

案例三:

include ‘./no_this_file.php‘; //加载没有的文件

运行结果:

  大事不好,发生错误:
  错误代号为:2
  错误内容为:include(./no_this_file.php): failed to open stream: No such file or directory
  错误文件为:F:\demo\wuxianji\index.php
  错误行号为:28
  发生时间为:2018-07-03 06:30:05

  大事不好,发生错误:
  错误代号为:2
  错误内容为:include(): Failed opening ‘./no_this_file.php‘ for inclusion (include_path=‘E:\xampp\php\PEAR‘)
  错误文件为:F:\demo\wuxianji\index.php
  错误行号为:28
  发生时间为:2018-07-03 06:30:05

原文地址:https://www.cnblogs.com/xlju/p/8521862.html

时间: 2024-10-23 18:54:49

自定义错误处理器的相关文章

PHP学习笔记三十三【自定义错误处理器】

<?php //自定义错误处理器 //$errorno 错误号 //$errmes错误信息 //这两个参数是必须的 function my_error($errorno,$errmes) { echo "<font size='5' color='red'>$errorno</font><br/>"; echo "错误信息是:$errmes"; } //必须重写set_error_handler处理器 set_error_h

PHP 错误与异常 笔记与总结(9)自定义错误处理器

自定义错误处理器更加智能. <?php class myErrorHandler{ //$message:错误信息 //$filename:错误文件名 //$line:错误行号 //$vars:额外信息 public $message = ''; public $filename = ''; public $line = 0; public $vars = array(); protected $_noticeLog = 'D:\practise\php\From\notice\noticeLo

3.PHP自定义错误处理器

1. 使用set_error_handler 自定义错误处理函数说明 1.创建错误处理函数 2.设置不同级别调用函数 3.set_error_handler函数指定接管错误处理 set_error_handler 说明 mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] ) 设置一个用户的函数(error_handler)来处理脚本中出现的错误. 本函数可以用你自己定

错误处理器、错误触发器

[错误级别] 2 E_WARNING:非致命的run-time错误.不暂停脚本执行. 8 E_NOTICE:Run-time通知.脚本发现可能有错误发生,但也可能在脚本正常运行时发生. 256 E_USER_ERROR:致命的用户生成的错误.trigger_error()设置的E_ERROR. 512 E_USER_WARNING:非致命的用户生成的警告.trigger_error()设置的E_WARNING. 1024 E_USER_NOTICE:用户生成的通知.trigger_error()

Laravel之加密解密/日志/异常处理及自定义错误

一.加密解密 1.加密Crypt::encrypt($request->secret) 2.解密try { $decrypted = Crypt::decrypt($encryptedValue);} catch (DecryptException $e) { //} 二.日志 1.配置文件config/app.php 中的debug 配置选项控制浏览器显示的错误详情数量.默认情况下,该配置选项被设置在.env 文件中的环境变量APP_DEBUG .对本地开发而言,你应该设置环境变量APP_DE

MVC4 自定义错误页面(三)

一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.Web节点下加上 <customErrors mode="On"  defaultRedirect="~/Shared/Error" /> 翻阅一些大神写的博客,在他们的博客中指出defaultRedirect是指向错误页面的URL,可是经过本人测试的时候,发现

ASP.NET全局错误处理和异常日志记录以及IIS配置自定义错误页面

应用场景和使用目的 很多时候,我们在访问页面的时候,由于程序异常.系统崩溃会导致出现黄页.在通常的情况下,黄页对于我们来说,帮助是极大的,因为它可以帮助我们知道问题根源,甚至是哪一行代码出现了错误.但这对于用户是非常可怕的,因为用户不知道发生了什么,也无法了解黄页给出的内容.甚至,如果我们遇到一些不友好的人,他们会拿这些内容大做文章,对我们网站产生威胁. 那我们如何在程序异常.系统崩溃时,不会出现黄页,并且还可以给出一些更加友好的提示呢?甚至在我们需要的时候,可以收集这些异常信息,并加以分析,能

PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()

通过 Set_error_handler() 函数设置用户自定义的错误处理函数. 步骤: ① 创建错误处理函数 ② 设置不同级别调用函数 ③ Set_error_handler() 函数制定接管错误处理—— 如果使用了该函数,程序会绕过标准的 PHP 错误处理. 摘自:php.net mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] ) 设置一个用户的函数(erro

简单的php自定义错误日志

平时经常看php的错误日志,很少有机会去自己动手写日志,看了王健的<最佳日志实践>觉得写一个清晰明了,结构分明的日志还是非常有必要的. 在写日志前,我们问问自己:为什么我们有时要记录自定义的日志呢?而不用系统默认的日志记录方式呢? 我认为有两个原因: 1.团队需要一个统一格式的日志方便管理 2.大量无用错误日志占据硬盘空间,仅需记录有意义的日志. 那么,实践一下. 1.打开你的php.ini 2.打开日志记录,将 log_errors = Off 改成 log_errors = On 3.将p