欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-10 08:46:02
本文实例讲述了thinkphp5框架异常处理操作。分享给大家供大家参考,具体如下:异常处理有时候服务端会报出我们无法感知的错误,tp5默认会自动渲染错误的形式,生产环境中这样的形式并不是我们想要的。未...

本文实例讲述了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);
    }