PHP (Yii2) 自定义业务异常类(可支持返回任意自己想要的类型数据)

public function beforeAction($action)
    {
        return parent::beforeAction($action);
    }

    public function runAction($id, $params = [])
    {
        try {
            return parent::runAction($id, $params);
        } catch (MyException $myException) {
            //此处返回业务错误 比如返回json字符串错误
            $result = [
                ‘status‘ => $myException->getCode(),
                ‘message‘ => $myException->getMessage(),
                ‘data‘ => null
            ];
            return json_encode($result, true);

        } catch (\Exception $ex) {
            throw  $ex;
        }
    }

    public function afterAction($action, $result)
    {
        return parent::afterAction($action, $result);
    }

异常类(只需要继承基础的异常类即可)

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/12/8 0008
 * Time: 14:38
 */

namespace app\librarys;

class MyException extends \Exception
{

}

可以在任意地方使用,不需要再写返回值,自动返回。

throw new MyException(‘错误信息‘);

原文地址:https://www.cnblogs.com/lt-com/p/10087667.html

时间: 2024-10-18 02:58:48

PHP (Yii2) 自定义业务异常类(可支持返回任意自己想要的类型数据)的相关文章

自定义一个异常类模板代码实例

一:自定义异常类: package 自定义异常; //或者继承RuntimeException(运行时异常) public class MyException extends Exception { private static final long serialVersionUID = 1L; // 提供无参数的构造方法 public MyException() { } // 提供一个有参数的构造方法 public MyException(String message) { super(mes

如何自定义一个异常类

如何自己定义一个异常类来管理相应的异常? 1) 为这个找一个近似的类作为父类. 2) 在该类中编写两个构造器: a) 默认构造器; b) 带String message参数的构造器且在该构造器中使用 super(message); 语句     来调用父类的构造器完成异常原因的更改. 以下实例为,创建一个小猫对象,其年龄为负数则显示为异常 public class Exception7 { public static void main(String[] args) { Cat c1=null;

Python自定义一个数组类,支持数组之间的四则运算和其他常见方法

class MyArray: '''保证输入的内容是整型.浮点型''' def ___isNumber(self, num): if not isinstance(num, (int,float)): return False return True #开始写构造函数,接受可变长度的数组 def __init__(self, *args): if args == None: self.__value = [] else: for a in args: if not self.___isNumbe

C#高级编程八十天----异常类

异常类 在C#里,异常处理就是C#为处理错误情况提供的一种机制.它为每种错误情况提供了定制的处理方式,并且把标志错误的代码预处理错误的代码分离开来. 对.net类来说,一般的异常类System.Exception派生于System.Object.还有许多定义好的异常类(例如:System.SystemExpection,SYstem.ApplicationException等),他们又派生于System.Exception类.其中System.ApplicationException类是第三方定

C#编程(八十)---------- 异常类

异常类 在C#里,异常处理就是C#为处理错误情况提供的一种机制.它为每种错误情况提供了定制的处理方式,并且把标志错误的代码预处理错误的代码分离开来. 对.net类来说,一般的异常类System.Exception派生于System.Object.还有许多定义好的异常类(例如:System.SystemExpection,SYstem.ApplicationException等),他们又派生于System.Exception类.其中System.ApplicationException类是第三方定

基于数组实现Java 自定义Stack栈类及应用

栈是存放对象的一种特殊容器,在插入与删除对象时,这种结构遵循后进先出( Last-in-first-out,LIFO)的原则.java本身是有自带Stack类包,为了达到学习目的已经更好深入了解stack栈,自己动手自建java stack类是个很好的学习开始: 自建Java Stack 类 Stack 类: 1 package com.stack; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 6 /** 7 * St

Java 自定义Stack栈类及应用

栈是存放对象的一种特殊容器,在插入与删除对象时,这种结构遵循后进先出( Last-in-first-out,LIFO)的原则.java本身是有自带Stack类包,为了达到学习目的已经更好深入了解stack栈,自己动手自建java stack类是个很好的学习开始: 自建Java Stack 类 Stack 类: package com.stack; import java.util.ArrayList; import java.util.Arrays; /** * Stack Class * @a

Java异常类及处理

异常概述:运行时发生的不正常情况 在java中用类的形式对不正常的情况进行了描述和封装对象. 描述不正常的类,称之为异常类. 异常就是java通过面向对象的思想将问题封装成了对象,用异常类对其进行描述. 不同的问题用不同的类进行具体的描述,比如角标越界,空指针等. 异常体系两大类: 无论是error,还是Exception,问题发生就应该可以抛出,让调用者知道并处理,该体系的特点就在于Throwable及其所有子类都具备可抛性. Throwable: ① 一般不可处理的.Error 特点:是由J

异常类的构建(四)

我们在之前学习了 C++ 中有关异常的知识,现在我们来重新回顾下.那么异常的格式是什么呢?便是 try ... catch ...:try 语句处理正常的代码逻辑,而 catch 语句则处理异常情况,try 语句中的异常由对应的 catch 语句处理.格式如下 try {     double r = divide(1, 0); } catch(...) {     cout << "Divided by zero ..." << endl; } 在 C++ 中