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'];
    }
    }
    }





    抛出异常时显示如下

    
    
    
     
  • 相关阅读:
    C#中抽象类和接口
    ArcGIS for Flex中引入google map作底图
    USB、UART、SPI等总线速率
    步步详解之第1节----ALTERA FPGA关于PLL的使用,帮你用光所有PLL
    FPGA笔试必会知识点2—FPGA器件
    FPGA笔试必会知识点1--数字电路基本知识
    (转)modelsim-win64-10.1c的安装
    基于FPGA的温度采集显示与报警
    基于FPGA的步进电机说明文档
    基于FPGA的直流电机
  • 原文地址:https://www.cnblogs.com/zhyphp/p/11557708.html
Copyright © 2011-2022 走看看