Merge branch 'dev' into ohos
This commit is contained in:
@@ -102,11 +102,14 @@ public final class ErrorUtils {
|
|||||||
final MessageCode messageCode = messageCodeException.getMessageCode();
|
final MessageCode messageCode = messageCodeException.getMessageCode();
|
||||||
status = messageCode.getStatus();
|
status = messageCode.getStatus();
|
||||||
message = Message.fail(messageCode, messageCodeException.getMessage());
|
message = Message.fail(messageCode, messageCodeException.getMessage());
|
||||||
} else if(rootError instanceof Throwable throwable) {
|
} else if(
|
||||||
|
rootError instanceof Throwable rootThrowable &&
|
||||||
|
globalError instanceof Throwable globalThrowable
|
||||||
|
) {
|
||||||
// 未知异常:异常转换
|
// 未知异常:异常转换
|
||||||
final MessageCode messageCode = ErrorUtils.messageCode(status, throwable);
|
final MessageCode messageCode = ErrorUtils.messageCode(status, globalThrowable, rootThrowable);
|
||||||
status = messageCode.getStatus();
|
status = messageCode.getStatus();
|
||||||
message = Message.fail(messageCode, ErrorUtils.message(messageCode, throwable));
|
message = Message.fail(messageCode, ErrorUtils.message(messageCode, rootThrowable));
|
||||||
} else {
|
} else {
|
||||||
// 没有异常
|
// 没有异常
|
||||||
final MessageCode messageCode = MessageCode.of(status);
|
final MessageCode messageCode = MessageCode.of(status);
|
||||||
@@ -193,20 +196,35 @@ public final class ErrorUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param status 原始状态编码
|
* @see #messageCode(int, Throwable, Throwable)
|
||||||
* @param throwable 异常
|
*/
|
||||||
|
public static final MessageCode messageCode(int status, Throwable throwable) {
|
||||||
|
return ErrorUtils.messageCode(status, throwable, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param status 原始状态
|
||||||
|
* @param globalThrowable 外层异常
|
||||||
|
* @param rootThrowable 原始异常
|
||||||
*
|
*
|
||||||
* @return 状态编码
|
* @return 响应状态
|
||||||
*
|
*
|
||||||
* @see ResponseEntityExceptionHandler
|
* @see ResponseEntityExceptionHandler
|
||||||
* @see DefaultHandlerExceptionResolver
|
* @see DefaultHandlerExceptionResolver
|
||||||
*/
|
*/
|
||||||
public static final MessageCode messageCode(int status, Throwable throwable) {
|
public static final MessageCode messageCode(int status, Throwable globalThrowable, Throwable rootThrowable) {
|
||||||
final Class<?> clazz = throwable.getClass();
|
if(rootThrowable == null || globalThrowable == null) {
|
||||||
|
return MessageCode.CODE_9999;
|
||||||
|
}
|
||||||
|
final Class<?> rootClazz = rootThrowable.getClass();
|
||||||
|
final Class<?> globalClazz = globalThrowable.getClass();
|
||||||
return CODE_MAPPING.entrySet().stream()
|
return CODE_MAPPING.entrySet().stream()
|
||||||
.filter(entry -> {
|
.filter(entry -> {
|
||||||
final Class<?> mappingClazz = entry.getKey();
|
final Class<?> mappingClazz = entry.getKey();
|
||||||
return mappingClazz.equals(clazz) || mappingClazz.isAssignableFrom(clazz);
|
return mappingClazz.equals(globalClazz) ||
|
||||||
|
mappingClazz.isAssignableFrom(globalClazz) ||
|
||||||
|
mappingClazz.equals(rootClazz) ||
|
||||||
|
mappingClazz.isAssignableFrom(rootClazz);
|
||||||
})
|
})
|
||||||
.map(Map.Entry::getValue)
|
.map(Map.Entry::getValue)
|
||||||
.findFirst()
|
.findFirst()
|
||||||
@@ -271,7 +289,7 @@ public final class ErrorUtils {
|
|||||||
if(cause instanceof MessageCodeException) {
|
if(cause instanceof MessageCodeException) {
|
||||||
return cause;
|
return cause;
|
||||||
}
|
}
|
||||||
} while(cause != null && (cause = cause.getCause()) != null);
|
} while(cause != null && cause.getCause() != null && (cause = cause.getCause()) != null);
|
||||||
// 返回原始异常
|
// 返回原始异常
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user