定义一个有用的 MyBaseException

简介: import java.util.ArrayList;import java.util.List;public class MyBaseException extends Exception { public MyBaseExceptio...
import java.util.ArrayList;
import java.util.List;

public class MyBaseException extends Exception {
    public MyBaseException() {
        super();
    }

    public MyBaseException(String message) {
        super(message);
    }

    public MyBaseException(String message, Throwable cause) {
        super(message, cause);
    }

    public MyBaseException(Throwable cause) {
        super(cause);
    }

    public static String getStackMsg(Throwable e) {

        StringBuffer sb = new StringBuffer();
        StackTraceElement[] stackArray = e.getStackTrace();
        sb.append(e.getClass().getName() + "\n");
        for (int i = 0; i < stackArray.length; i++) {
            StackTraceElement element = stackArray[i];
            sb.append(element.toString() + "\n");
        }
        return sb.toString();
    }

    public static List<String> getStackMsgList(Throwable e) {

        List<String> stringList = new ArrayList<>();
        StackTraceElement[] stackArray = e.getStackTrace();
        for (int i = 0; i < stackArray.length; i++) {
            StackTraceElement element = stackArray[i];
            stringList.add(
                    stackArray[i].getFileName() + "." +
                            stackArray[i].getClassName() + "." +
                            stackArray[i].getMethodName() + "." +
                            stackArray[i].getLineNumber()
            );
        }
        return stringList;
    }
}
@RequestMapping(value = "api")
@ResponseBody
public Result api() {
    Result<List<MyDto>> result = new Result();
    try {
        result.setSuccess(true);
        result.setData(api.getAll());
    } catch (Exception e) {
        result.setSuccess(false);
        result.setMsg(MyBaseException.getStackMsgList(e));
    }
    return result;
}

class Result<T> {
    T data;
    boolean success = false;
    List<String> msg;


    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public List<String> getMsg() {
        return msg;
    }

    public void setMsg(List<String> msg) {
        this.msg = msg;
    }
}

}
相关文章
|
5月前
|
算法
‘/’ 和 ‘%’ 在编程中的作用【附加练习题】
‘/’ 和 ‘%’ 在编程中的作用【附加练习题】
|
SQL 负载均衡 数据可视化
第六章:参数和变量
第六章:参数和变量
503 1
|
4月前
|
JavaScript 前端开发 Java
函数形状的定义方式在编程中可以有多种,具体取决于使用的编程语言和上下文。以下是几种常见的定义方式:
函数形状的定义方式在编程中可以有多种,具体取决于使用的编程语言和上下文。以下是几种常见的定义方式:
31 3
|
4月前
|
缓存 监控 程序员
Python中的装饰器是一种特殊类型的声明,它允许程序员在不修改原有函数或类代码的基础上,通过在函数定义前添加额外的逻辑来增强或修改其行为。
【6月更文挑战第30天】Python装饰器是无侵入性地增强函数行为的工具,它们是接收函数并返回新函数的可调用对象。通过`@decorator`语法,可以在不修改原函数代码的情况下,添加如日志、性能监控等功能。装饰器促进代码复用、模块化,并保持源代码整洁。例如,`timer_decorator`能测量函数运行时间,展示其灵活性。
38 0
|
2月前
|
SQL 开发者
访问者模式问题之FunctionExtractor是怎么工作的,以从SqlNode中提取函数名称的
访问者模式问题之FunctionExtractor是怎么工作的,以从SqlNode中提取函数名称的
|
3月前
|
机器学习/深度学习 自然语言处理 JavaScript
无类型语言的例子
【7月更文挑战第14天】本文介绍编程语言类型系统的分类。编程语言依据类型系统分为有类型、弱类型和无类型。类型系统的探讨涉及抽象语法、语义和运行时行为。
43 2
|
5月前
|
缓存 监控 Java
Hysterix的概念、作用、使用方法
Hysterix的概念、作用、使用方法
41 0
|
NoSQL Java 数据库
解释afterPropertiesSet方法的用处
解释afterPropertiesSet方法的用处
|
存储 程序员 编译器
C#编程深入研究变量,类型和方法(二)
C#编程深入研究变量,类型和方法
C#编程深入研究变量,类型和方法(二)
|
存储 安全 编译器
C#编程深入研究变量,类型和方法(一)
C#编程深入研究变量,类型和方法
C#编程深入研究变量,类型和方法(一)