thinkphp5.1全局异常类封装

简介: thinkphp5.1全局异常类封装
1.thinkphp是很容易来写接口的,下面就来一个异常类的封装,首先我们需要在项目application里创建lib文件夹,如下图所示。

2.写BaseException的代码
<?php
namespace app\lib\exception;
use Exception;
class BaseException extends Exception
{
  public $code=400;
  public $msg='异常';
  public $errorCode=999;
  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->msg = $params['msg'];
    if(array_key_exists('errorCode', $params)) $this->errorCode = $params['errorCode'];
  }
}
3.写ExceptionHandler的代码
<?php
namespace app\lib\exception;
use Exception;
use think\exception\Handle;
/**
* PHP异常处理类
*/
class ExceptionHandler extends Handle
{
  public $code;
  public $msg;
  public $errorCode;
  public function render(Exception $e)
  {
    if($e instanceof BaseException){
      $this->code = $e->code;
      $this->msg = $e->msg;
      $this->errorCode = $e->errorCode;
    }else{
      //debug开启,显示默认异常
      if(config('app.app_debug')) return parent::render($e);
      $this->code = 500;
      $this->msg = '服务器异常';
      $this->errorCode = 999;
    }
    $res=[
      'code'=>$this->code,
      'msg'=>$this->msg,
      'errorCode'=>$this->errorCode
    ];
    return json($res,$this->code);
  }
}
?>
4.接下来,我们引用,这里我是在Index.php中引用的,如下,代码
<?php
namespace app\Index\controller;
use think\Controller;
use think\Request;
use app\lib\exception\BaseException;    // 这个就是引入我们的异常类
class Index extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
      throw new BaseException(['msg'=>'验证失败']);  // 上面的参数可以传也可以不传,不传的话就按默认
    }
}

好了,这就是thinkphp5.1的异常类处理了。其他框架基本类同。如果还有其他需求可以参照

官方异常处理文档

目录
相关文章
|
7月前
|
Java
【专栏】Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
80 4
|
7月前
|
PHP 开发者
【专栏】介绍PHP的命名空间,它是一个用于封装代码、避免名称冲突的机制
【4月更文挑战第27天】本文介绍了PHP的命名空间,它是一个用于封装代码、避免名称冲突的机制。命名空间的作用包括:防止大型项目中的命名冲突,提升代码可读性和可维护性,以及方便代码重用。文章详细阐述了如何定义、导入命名空间,使用完全限定名称以及设置命名空间别名。通过实例展示了命名空间在项目模块划分和第三方库如Laravel中的应用,强调了命名空间在组织和管理PHP代码中的关键作用。
64 4
|
4月前
|
设计模式 安全 数据库连接
|
5月前
|
开发框架 前端开发 JavaScript
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
|
7月前
thinkphp5.1全局验证层封装
thinkphp5.1全局验证层封装
57 1
thinkphp5.1全局验证层封装
|
7月前
|
JSON 数据格式
thinkphp5.1封装基类控制器
thinkphp5.1封装基类控制器
50 0
thinkphp5.1封装基类控制器
|
7月前
|
JSON 前端开发 Java
SpringBoot - 统一格式封装及高阶全局异常处理
SpringBoot - 统一格式封装及高阶全局异常处理
95 0
Springboot 全局异常捕获以及统一接口返回结果
Springboot 全局异常捕获以及统一接口返回结果
297 0
Echarts公用代码的变量统一封装调用
Echarts公用代码的变量统一封装调用
61 0