YII修改Exception返回值为任意格式

YII提供的可更改异常返回的格式很有限而且很不灵活,在这里我们需要修改框架的代码来实现。

既然是异常,那么我们就要修改响应的文件:/home/gcheng/workShop/basic/vendor/yiisoft/yii2/web/ErrorHandler

我们的目标是把异常格式改为如下格式:

{
    "Exception": [
        {
            "code": -3,
            "name": "decryption error"
        }
    ]
}

那么相对与原有的格式我们要去掉默认的code,name和type

       //使用如下格式抛出异常,抛出的异常继承自UserException(YII用来抛出用户定制的异常)       throw new UserException(Yii::$app->ZYKException->errorMessage(-6));

       //在此处array中为字符串: {"Exception":[{"code":-3,"name":"decryption error"}]},传递字符串而不是直接传递数组的原因是,异常的message必须是字符串类型       if($exception instanceof UserException)
        {
            $array = json_decode($exception->getMessage(), true);
        }
        else
        {
            $array = [
                ‘name‘ => ($exception instanceof Exception || $exception instanceof ErrorException) ? $exception->getName() : ‘Exception‘,
                ‘message‘ => $exception->getMessage(),
                ‘code‘ => $exception->getCode(),
            ];
        }
时间: 2024-10-18 09:30:37

YII修改Exception返回值为任意格式的相关文章

Ajax属性和函数以及 返回值之XML格式和文本格式(二)

(一) 客户端请求文本之json格式:接收到json格式,再有js解析(具体先eval成对象,然后.即可) var text = this.responseText; var book = eval('('+ text +')'); document.getElementById('btitle').value = book.title; document.getElementById('bintro').value = book.intro; //其中btitle和bintro是客户端网页中的

通过fiddler修改通讯返回值

1 在fiddler里选中url,右键unlock for editing 2 在fiddler里点击url, 在右面的返回值的 TextView 项里修改数据 3 取消 unlock for editing 4 把url拖到AutoResponder里面,并点保存 原文地址:https://www.cnblogs.com/jason-beijing/p/10328398.html

接口返回值response统一标准格式

一.为什么要对springboot的接口返回值统一标准格式 springboot默认情况下的response格式:String.Object.void.异常,以上几种情况,如果和客户端开发人员联调接口,他们会很懵逼,因为你给他们的接口没有一个统一的格式,客户端开发人员,不知道如何处理返回值,所以要统一response的标准格式. 二.定义response的标准格式 一般的response的标准格式包含三部分:1.status状态值:代表本次请求response的状态结果:2.response描述

用python读取oracle函数返回值

在oracle中创建一个函数,本来是想返回一个index table的,没有成功.想到文本也可以传输信息,就突然来了灵感,把返回值设置文本格式. 考虑到返回数据量可能会很大,varchar2类型长度吃紧,于是将返回值类型设置为clob. 我是用scott用户的测试表,这个是函数定义情况: create or replace function test_query_func(dept varchar2) return clob is        type test_record is recor

try-catch-finally对返回值的影响

catch 和 finally 一起使用的常见方式是:在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源. finally 块用于清理try块分配的任何资源,无论try中是否异常或者终止(return),finally块都会执行. 如果在finally块中修改了返回值,会对最终返回的结果有何影响呢? 1,如果返回值是值类型 //finally执行,i值是2013,但是最终返回2015 static int test() { int i = 201

springMVC学习(4)-商品修改(RequestMapping解释、controller返回值)

一.需求: 操作流程: 1.进入商品查询列表页面 2.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 3.在商品修改页面,修改商品信息,修改后,点击提交 代码: ItemsMapper.xml:--使用的是逆向工程生成的: 1 <mapper namespace="com.cy.mapper.ItemsMapper" > 2 <sql id="Base_Column_List" > 3 id, name, price,

WebService,ASMX文件使用XML格式数据传递参数、验证与获取XML格式返回值的一种方式

1:首先WebService方法定义,每个方法定义两个参数,一个用于验证权限,string格式的XML文本用于传输数据.最终目的实现,WebService方法,验证权限,获取XML数据,处理之后返回XML数据.一下面一段代码为例进行说明: [WebMethodAttribute(Description = "新增督学计划")] public string InspectorPlan_Add(string Token, string XMLParas) { try { //安全凭证检查

ASP.NET Core 2.2 WebApi 系列【八】统一返回格式(返回值、模型验证、异常)

现阶段,基本上都是前后端分离项目,这样一来,就需要前后端配合,没有统一返回格式,那么对接起来会很麻烦,浪费时间.我们需要把所有接口及异常错误信息都返回一定的Json格式,有利于前端处理,从而提高了工作效率. 一.准备工作 定义响应实体类 /// <summary> /// 响应实体类 /// </summary> public class ResultModel { /// <summary> /// 状态码 /// </summary> public in

C语言 realloc为什么要有返回值,realloc返回值详解/(解决任意长度字符串输入问题)。

在C语言操作中会用到大量的内存操作,其中很常用的一个是realloc(). 由字面意思可以知道,该函数的作用是用于重新分配内存. 使用方式如下: NewPtr=(数据类型*)realloc(OldPtr,MemSize) 其中OldPtr指向 待重新分配内存的指针. NewPtr指向 新分配空间的指针. MemSize为 分配后的空间大小. 该函数的使用涉及以下几个问题: 1.不同情况下的返回值 2.OldPtr指向的内存会不会自动释放 3.OldPtr和NewPtr分别是什么内容,他们有什么关