zoukankan      html  css  js  c++  java
  • TP5实现自定义抛出异常消息(关闭debug)

    重写Handle的render方法,实现自定义异常消息-----------------------------------------------------------------------
    首先要在config.php里面配置

    // 异常处理handle类 留空使用 	hinkexceptionHandle
    'exception_handle' => '\app\common\exception\ExceptionHandler',



    ExceptionHandler
    .php


    <?php

    namespace appcommonexception;

    use thinkexceptionHandle;
    use thinkLog;
    use Exception;

    /**
    * 重写Handle的render方法,实现自定义异常消息
    * Class ExceptionHandler
    * @package appcommonlibraryexception
    */
    class ExceptionHandler extends Handle
    {
    private $code;
    private $message;

    /**
    * 输出异常信息
    * @param Exception $e
    * @return hinkResponse| hink esponseJson
    */
    public function render(Exception $e)
    {
    if ($e instanceof BaseException) {
    $this->code = $e->code;
    $this->message = $e->message;
    } else {
    if (config('app_debug')) {
    return parent::render($e);
    }
    $this->code = 0;
    $this->message = $e->getMessage() ?: '很抱歉,服务器内部错误';
    $this->recordErrorLog($e);
    }
    return json(['msg' => $this->message, 'code' => $this->code]);
    }

    /**
    * 将异常写入日志
    * @param Exception $e
    */
    private function recordErrorLog(Exception $e)
    {
    Log::record($e->getMessage(), 'error');
    Log::record($e->getTraceAsString(), 'error');
    }
    }


    自定义异常类的基类---------------------------------------------------------------------------------------------
     
    BaseException.php
    
    
    <?php

    namespace appcommonexception;

    use thinkException;

    /**
    * Class BaseException
    * 自定义异常类的基类
    */
    class BaseException extends Exception
    {
    public $code = 0;
    public $message = 'invalid parameters';

    /**
    * 构造函数,接收一个关联数组
    * @param array $params 关联数组只应包含code、msg,且不应该是空值
    */
    public function __construct($params = [])
    {
    if (!is_array($params)) {
    return;
    }
    if (array_key_exists('code', $params)) {
    $this->code = $params['code'];
    }
    if (array_key_exists('msg', $params)) {
    $this->message = $params['msg'];
    }
    }
    }





    抛出异常时显示如下

    
    
    
     
  • 相关阅读:
    常用的输出方法
    使用Action()和ActionLink()生成链接
    "??"运算符
    使用路由数据
    路由匹配总结
    routes.MapRoute()定义路由的要求
    控制器和视图数据传递小结
    跨请求数据传递TempData
    Redis安装创建
    JAVA获取当前时间加一天
  • 原文地址:https://www.cnblogs.com/zhyphp/p/11557708.html
Copyright © 2011-2022 走看看