• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Thinkphp5框架异常处理操作实例分析

    本文实例讲述了Thinkphp5框架异常处理操作。分享给大家供大家参考,具体如下:

    异常处理

    有时候服务端会报出我们无法感知的错误,TP5默认会自动渲染错误的形式,生产环境中这样的形式并不是我们想要的。

    未知错误

    1.exception\Handle.php下的render方法需要覆盖

    创建ApiHandleException.php

    ?php
    
    namespace app\common\lib\exception;
    use think\exception\Handle;
    
    class ApiHandleException extends Handle {
    
      /**
       * http 状态码
       * @var int
       */
      public $httpCode = 500;
    
      public function render(\Exception $e) {
        return show(0, $e->getMessage(), [], $this->httpCode);
      }
    }
    
    

    2.修改config.phpexception_handle配置项

    已知错误

    我们在判断一个数据是否合法的时候,若不合法则抛出异常。

    例如:

        if($data['msg'] != 1){
          throw Exception('数据异常');
        }
    
    

    使用内置的异常http状态码始终为500

    1.创建ApiException.php

    ?php
    
    namespace app\common\lib\exception;
    use think\Exception;
    
    class ApiException extends Exception {
    
      public $message = '';
      public $httpCode = 500;
      public $code = 0;
      /**
       * @param string $message
       * @param int $httpCode
       * @param int $code
       */
      public function __construct($message = '', $httpCode = 0, $code = 0) {
        $this->httpCode = $httpCode;
        $this->message = $message;
        $this->code = $code;
      }
    }
    
    

    2.对ApiHandleException.php改写

    ?php
    
    namespace app\common\lib\exception;
    use think\exception\Handle;
    
    class ApiHandleException extends Handle {
    
      /**
       * http 状态码
       * @var int
       */
      public $httpCode = 500;
    
      public function render(\Exception $e) {
        if ($e instanceof ApiException) {
          $this->httpCode = $e->httpCode;
        }
        return show(0, $e->getMessage(), [], $this->httpCode);
      }
    }
    
    

    开发环境

    在开发环境的时候依旧使用异常渲染的模式

    ApiHandleException.php中添加代码

        if(config('app_debug') == true) {
          return parent::render($e);
        }
    
    

    更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

    希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • 详解Docker 下开发 hyperf 完整使用示例
    • PhpStorm 如何优雅的调试Hyperf的方法步骤
    • php框架知识点的整理和补充
    • php中Workerman框架实例讲解
    • 浅谈php常用的7大框架的优缺点
    • php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
    • ThinkPHP5框架中使用JWT的方法示例
    • Thinkphp5框架中引入Markdown编辑器操作示例
    • 浅谈减少Hyperf框架的扫描时间
    上一篇:Thinkphp5框架中引入Markdown编辑器操作示例
    下一篇:ThinkPHP5框架中使用JWT的方法示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Thinkphp5框架异常处理操作实例分析 Thinkphp5,框架,异常,处理,