zoukankan      html  css  js  c++  java
  • yii2自定义500错误

      由于项目想加预警监控,有一块儿是涉及到程序内部错误的500,这样的错误级别比较高,所以就需要捕获这样的错误,顺便自定义了一把视图样式

     看了这篇博客,知道了如何去自定义自己错误页面 : http://tech.lubanr.com/2015/12/12/yii2-0框架的错误和异常处理机制/

     如果我们需要定制自己的异常处理方式,需要做的就是继承yiiaseErrorHandler,写一个定制的renderException,最后在$config中定制自己的errorHandler

    1.创建ErrorHandler 继承这个yiiaseErrorHandler抽象类,然后定义这个父类中的抽象方法

    <?php
    namespace commoncomponentexception;
    /**
     * User: szliugx@gmail.com
     * Date: 2016/9/20
     * Time: 14:24
     */
    use yii;
    use yiiaseErrorHandler as BaseErrorHandler;
    use commoncomponentearlywarningEarlyWarning;
    
    class ErrorHandler extends BaseErrorHandler
    {
    
        public $errorView = '@app/views/errorHandler/error.php';
        public function renderException($exception)
        {
            if(Yii::$app->request->getIsAjax()){
                exit( json_encode( array('code' =>$exception->getCode(),'msg'  =>$exception->getMessage()) ));
            }else{
                //将500的代码,发送监控预警
                if(!empty($exception->getCode()) && $exception->getCode() ==8){
                    $params = [];
                    $params['projectName'] = "oct-youban";
                    $params['level'] = 5;
                    $params['title'] = "500:".$exception->getMessage();
                    $params['value'] = $exception->getCode();
                    $params['message'] = $exception->getFile().":".$exception->getLine();
                    $params['bizcode'] = 8;
                    $params['subcode'] = 8001;
                    EarlyWarning::WarninApi($params);
                }
                echo  Yii::$app->getView()->renderFile($this->errorView,['exception' => $exception,],$this);
            }
        }
    }

    2.创建视图文件 : @app/views/errorHandler/error.php

    <?php
    /**
     * User: szliugx@gmail.com
     * Date: 2016/9/20
     * Time: 15:23
     */
    ?>
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <meta name="format-detection" content="telephone=no">
        <meta http-equiv="Expires" content="-1">
        <meta http-equiv="Cache-Control" content="no-cache">
        <meta http-equiv="Pragma" content="no-cache">
        <title><?php if(!empty($exception->getCode())&&($exception->getCode() == 8)){echo "出错啦";}else{ echo $exception->getMessage();}?></title>
        <link href="/css/error.css" rel="stylesheet" 0="frontendassetsAppAsset">
    </head>
    <body>
    <div class="psy-status">
        <div class="status-icon icon-desk"></div>
        <div class="status-text">
            <p><?php if(!empty($exception->getCode())&&($exception->getCode() == 8)){echo "出错啦";}else{ echo $exception->getMessage();}?></p>
        </div>
    </div>
    </body>
    </html>

    3.修改应用的配置文件:@app/config/main.php

            'errorHandler' => [
                //'errorAction' => 'site/error',
                'class' => 'commoncomponentexceptionErrorHandler',
            ],

    修改上面三处,就能达到想要的目的,效果如下:

    500错误页:    

    404错误页 :

  • 相关阅读:
    centos 安装tomcat
    UTF8 的BOM带来的麻烦
    linux 下tomcat开机自启动
    proxool连接池空闲连接中断问题解决
    java判断字符串是否为空的方法总结
    修改my.cnf ,使mysql 的表面不区分大小写
    csc a Wx.NET app.doc
    用Wiz作为灵格斯词典(Lingoes)的生词本
    单词
    使用OKHTTP方式发送POST请求,获取返回的JSON串
  • 原文地址:https://www.cnblogs.com/liugx/p/5890102.html
Copyright © 2011-2022 走看看