PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-对我的框架实施错误处理大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_616_0@我将开始在我的框架中实施错误处理,并寻求有关如何构建它的一些建议.

@H_616_0@首先让我解释一下我的框架是如何构建的:

@H_616_0@我将框架启动与应用程序启动分开,因此应由专用于该类的类专门处理应用程序启动内引起的任何错误.

@H_616_0@我的想法是让一个名为Core_Error_exception的类将错误报告设置为E_ALL,因为我的框架将严格限制PHP 5.3的错误,然后作为我的应用程序负载,我将在该类中运行关闭函数以恢复所有认值值已更改.

@H_616_0@我想做的是捕获所有E _ * _ NOTICE而不是E _ * _ ERROR的错误,然后在应用程序启动之前,我告诉类停止捕获错误,因为Application_Error_Exception将注意错误.

@H_616_0@因此,我将需要一种跟踪所有错误(包括异常和触发器)的方法,然后在应用程序初始化之前@L_674_16@框架调试页面.

@H_616_0@我正在寻找的课程是这样的

@H_616_0@
class Core_Error_Exception
{
    var $previus_error_level,$captured_contents;

    private $stack_trace = array();

    public function Core_Error_Exception()
    {
        $this->previus_error_level = error_reporTing(-1);
        set_error_handler(array($this,'_collect_error'));
        set_exception_handler(array($this,'_collect_error'));
        ob_start(array($this,'_capture'));
    }

    public function _collect_error($errno, $errstr, $errfile, $errline, $context)
    {
        $this->stack_trace[] = array(
            array('name' => 'Error ID:',    'value' => $errno),
            array('name' => 'Error String:','value' => $errstr),
            array('name' => 'Error File:',  'value' => $errfilE),
            array('name' => 'Error Line:',  'value' => $errlinE),
            array('name' => 'Context PRE:', 'value' => $context)
        );
        var_dump($this->stack_tracE);
    }

    /*
     * _capture is used to capture pre_bufferd content.
     */
    public function _capture($content,$bitfeild)
    {
        if($bitfeild & PHP_OUTPUT_HANDLER_START)
        {
            $this->captured_contents = $content;
        }

        if($bitfeild & PHP_OUTPUT_HANDLER_CONT)
        {
            $this->captured_contents .= $content;
        }

        if($bitfeild & PHP_OUTPUT_HANDLER_END)
        {
            $this->captured_contents .= $content;
        }
        return false;
    }
}
@H_616_0@因此,我想做的是能够以防跌倒的方式构造此类,以便将可能已触发的任何通知错误放入数组中,如果调用了E_ERROR通知,则此操作会自动运行在那一刻下来,以防止引起更多的错误.

@H_616_0@我将使用一个小的html模板处理程序,在其中可以传递该上下文错误集,因此请注意错误和单个E _ * _ ERROR(如果适用).

@H_616_0@与过去一样,构建此类的最佳方法是什么?我在执行错误跟踪/报告时遇到了一些困难.

@H_616_0@更新:当前课程

@H_616_0@如果触发了错误,例如trigger_error(‘test’,XXX);我希望能够跟踪所有错误,直到应用程序启动或触发了E_user_ERROR.

@H_616_0@有时我很难完全掌握PHP错误系统,等等,有时我对如何构建它感到困惑,以至于它不易摔倒.

解决方法:

@H_616_0@我不太确定自己在做什么,但是最直接的方法是按照以下方式使用嵌套的try块:

@H_616_0@
in Class Application:

    function run() {
        try {
            --do stuff
        } catch(AppException $E) {
            -- handle application-level exception
        }
        -- all other exceptions fall through


in Class Core:

    try {
        $core->init();
        $application->run(); <-- calls the above function
        $core->done();
    } catch(Exception $E) {
        --last chance exception handler
        --process exceptions the Application was unable to handle on its own
    }
@H_616_0@为了能够以这种方式捕获PHP内置错误trigger_error事件,还应该始终安装errors-to-exceptions handler.

大佬总结

以上是大佬教程为你收集整理的php-对我的框架实施错误处理全部内容,希望文章能够帮你解决php-对我的框架实施错误处理所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: