【rule】更新异常响应类,增加两个属性,增加ExceptionUtil

pull/3/head
fengshuonan 2020-12-16 16:45:49 +08:00
parent 8750a66f5e
commit c62e5710f1
2 changed files with 86 additions and 0 deletions

View File

@ -18,6 +18,18 @@ public class ErrorResponseData extends ResponseData {
*/
private String exceptionClazz;
/**
*
*/
private String exceptionTip;
/**
*
* <p>
*
*/
private String exceptionPlace;
public ErrorResponseData(String code, String message) {
super(Boolean.FALSE, code, message, null);
}

View File

@ -0,0 +1,74 @@
package cn.stylefeng.roses.kernel.rule.util;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.rule.pojo.response.ErrorResponseData;
/**
*
*
* @author fengshuonan
* @date 2020/12/16 16:03
*/
public class ExceptionUtil {
/**
*
*
* @param throwable
* @param packageName
* @return
* @author fengshuonan
* @date 2020/12/16 16:04
*/
public static String getFirstStackTraceByPackageName(Throwable throwable, String packageName) {
if (ObjectUtil.hasEmpty(throwable)) {
return "";
}
// 获取所有堆栈信息
StackTraceElement[] stackTraceElements = throwable.getStackTrace();
// 默认返回第一条堆栈信息
String stackTraceElementString = stackTraceElements[0].toString();
// 包名没传就返第一条堆栈信息
if (StrUtil.isEmpty(packageName)) {
return stackTraceElementString;
}
// 找到项目包名开头的第一条异常信息
for (StackTraceElement stackTraceElement : stackTraceElements) {
if (stackTraceElement.toString().contains(packageName)) {
stackTraceElementString = stackTraceElement.toString();
break;
}
}
return stackTraceElementString;
}
/**
* ErrorResponseData
*
* @author fengshuonan
* @date 2020/12/16 16:09
*/
public static void fillErrorResponseData(ErrorResponseData errorResponseData, Throwable throwable, String projectPackage) {
if (errorResponseData == null || throwable == null) {
return;
}
// 填充异常类信息
errorResponseData.setExceptionClazz(throwable.getClass().getSimpleName());
// 填充异常提示信息
errorResponseData.setExceptionTip(throwable.getMessage());
// 填充第一行项目包路径的堆栈
errorResponseData.setExceptionPlace(getFirstStackTraceByPackageName(throwable, projectPackage));
}
}