为了账号安全,请及时绑定邮箱和手机立即绑定
  • 查看全部
    0 采集 收起 来源:简介

    2018-04-09

  • 笔记链接:处理PHP中的错误

    查看全部
  • 查看全部
  • register_shutdown_function()函数是从内存中调用的,也就是PHP语句执行完之后(页面已不存在了)再调用这个函数,所以写路径的时候已经脱离这个脚本了,所以file_put_contents()路径要用绝对路径

     error_get_last # 得到最后产生的错误


    注意:如果在register_shutdown_function() 之前有die/exit则不会被执行


    查看全部
    0 采集 收起 来源:E_USER_相关错误

    2018-04-09

  • require_once 'MyErrorHandler.php';
    error_reporting(-1);
    //使用MyErrorHandler类直接调用deal方法
    /**
     * set_error_handler(array(类名/new 类名,方法名));
     * set_error_handler(函数名);
     */
    set_error_handler(array('MyErrorHandler','deal'));
    
    //通知级别错误
    echo $test;
    //警告级别错误
    settype($var,'king');
    //致命错误
    //test();
    
    //总结:手动抛出的信息会被显示在浏览器
    trigger_error('我是手动抛出的致命错误',E_USER_ERROR);
    
    echo 'this is a test ';


    查看全部
  • class MyErrorHandler{
        //错误信息
        public $message = '';
        //错误文件
        public $filename = '';
        //错误行号
        public $line = 0;
        //额外信息
        public $vars = array();
        protected $_noticelog = 'G:\notice\noticeLog.log';
    
        public function __construct($message, $filename, $line, $vars)
        {
            $this->message = $message;
            $this->filename = $filename;
            $this->line = $line;
            $this->vars = $vars;
        }
        //根据不同错误级别对应不同操作
        //遵循handler错误处理原则,errno:错误代码,line:错误行号
        public static function deal($errno,$errmsg,$filename,$line,$vars)
        {
            $self = new self($errmsg,$filename,$line,$vars);
            switch ($errno)
            {
                case E_USER_ERROR://致命级别
                    return $self->dealError();
                    break;
                case E_USER_WARNING://警告级别
                case E_WARNING:
                    return $self->dealWarning();
                    break;
                case E_NOTICE://通知级别
                case E_USER_NOTICE:
                    return $self->dealNotice();
                    break;
                default:
                    return false;
            }
        }
    
        /**
         * 如何处理致命错误
         */
        public function dealError()
        {
            //开启内存缓冲
            ob_start();
            //回溯上一条信息
            debug_print_backtrace();
            $backtrace = ob_get_flush();
            $errorMsg = <<<EOF
            出现了致命错误,如下:
    产生错误的文件:{$this->filename}
    产生错误的信息:{$this->message}
    产生错误的行号:{$this->line}
    追踪信息:{$backtrace}
    EOF;
        error_log($errorMsg,1,'xxxx@qq.com');
        exit(1);
        }
    
        /**
         * 如何处理警告错误
         */
        public function dealWarning()
        {
            $errorMsg = <<<EOF
            出现了警告错误,如下:
    产生警告的文件:{$this->filename}
    产生警告的信息:{$this->message}
    产生警告的行号:{$this->line}
    EOF;
            return error_log($errorMsg,1,'xxx@qq.com');
        }
    
        /**
         * 如何处理通知错误
         */
        public function dealNotice()
        {
            $datetime = date('Y-m-d H:i:s',time());
            $errorMsg = <<<EOF
            出现了通知错误,如下:
    产生通知的文件:{$this->filename}
    产生通知的信息:{$this->message}
    产生通知的行号:{$this->line}
    产生通知的时间:{$datetime}
    EOF;
            return error_log($errorMsg,3,$this->_noticelog);
        }
    }


    查看全部
  • 一个简单的调用
    查看全部
  • 这个set_exception_handler是来拯救的
    查看全部
  • 想写入一个文件之前的报错排查
    查看全部
  • 几个try怎么套
    查看全部
  • 经典(这个视频可以看看)
    查看全部
  • //设置错误级别来开启或关闭错误显示 error_reporting(0); //不显示所有错误 error_reporting(-1); //显示所有错误 //也可以通过ini_set函数设置 ini_set('error_reporting',0); //不显示所有错误,0代表不显示,-1代表显示所有 ini_set('error_reporting',-1);//显示所有错误 //或者通过设置display关闭错误显示 ini_set('display_errors',0); //0代表关闭错误显示,1代表开启
    查看全部
  • 自己定义错误提示
    查看全部
  • 不显示错误 记录到错误日志中 记录到系统日志中
    查看全部
  • 一个简单的登陆错误报告
    查看全部

举报

0/150
提交
取消
课程须知
学习本门课程之前,建议先了解一下知识,会更有助于理解和掌握本门课程 1、掌握PHP的基础知识 2、了解面向对象编程
老师告诉你能学到什么?
1、PHP中的错误类型 2、PHP中的错误处理 3、PHP中自定义错误处理器 4、PHP中异常的使用 5、PHP中如何自定义异常类 6、PHP中如何自定义异常处理器

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!