定义一个有用的 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;
    }
}

}
相关文章
|
7月前
|
算法
‘/’ 和 ‘%’ 在编程中的作用【附加练习题】
‘/’ 和 ‘%’ 在编程中的作用【附加练习题】
|
存储 机器人 Windows
|
6月前
|
JavaScript 前端开发 Java
函数形状的定义方式在编程中可以有多种,具体取决于使用的编程语言和上下文。以下是几种常见的定义方式:
函数形状的定义方式在编程中可以有多种,具体取决于使用的编程语言和上下文。以下是几种常见的定义方式:
50 3
|
7月前
|
存储 数据可视化 编译器
learn_C_deep_1 (C程序补充知识、变量的声明和定义、声明和定义的区别)
learn_C_deep_1 (C程序补充知识、变量的声明和定义、声明和定义的区别)
|
7月前
|
存储 Java
变量的分类和作用2
变量的分类和作用
53 1
|
7月前
|
缓存 监控 Java
Hysterix的概念、作用、使用方法
Hysterix的概念、作用、使用方法
70 0
|
7月前
|
Java 编译器
变量的分类和作用1
变量的分类和作用
71 0
|
7月前
|
编译器 C++
在C++语言中函数的定义
在C++语言中函数的定义
120 0
|
存储 程序员 编译器
C#编程深入研究变量,类型和方法(二)
C#编程深入研究变量,类型和方法
C#编程深入研究变量,类型和方法(二)
|
存储 安全 编译器
C#编程深入研究变量,类型和方法(一)
C#编程深入研究变量,类型和方法
C#编程深入研究变量,类型和方法(一)