博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义异常 状态码 以及Aop拦截Apect
阅读量:5987 次
发布时间:2019-06-20

本文共 3021 字,大约阅读时间需要 10 分钟。

 

@Override @ServiceExceptionHandler public OperateResult createProcessTask(TaskInfoDO taskInfoDO) {
Boolean isTaskDistribution = UserHolder.getUser().getIsTaskDistribution(); if (null==isTaskDistribution||!isTaskDistribution){
throw new ErrorCodeException(DailyManageErrorCode.NO_AUTH_ERROR.withArgs("创建任务")); } }
@Aspect @Component public class ServiceExceptionHandleAspect {
@Around(value = "@annotation(serviceExceptionHandler)", argNames = "serviceExceptionHandler") public Object around(ProceedingJoinPoint pjp, ServiceExceptionHandler serviceExceptionHandler) throws Throwable {
Signature signature = pjp.getSignature(); MethodSignature methodSignature = (MethodSignature) signature; Method targetMethod = methodSignature.getMethod(); String className = targetMethod.getDeclaringClass().getName(); String methodName = targetMethod.getName(); ErrorLogInfoBuilder errorLogInfoBuilder = ErrorLogInfoBuilder.instance().ClassName(className).MethodName(methodName); //获取方法的参数 Object[] args = pjp.getArgs(); if(null != args && args.length > 0){
for(int i=0; i
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ServiceExceptionHandler {
String name() default ""; }

 

public class ErrorCodeException extends RuntimeException{
/** * */ private static final long serialVersionUID = 1L; private ErrorCode errorCode; public ErrorCodeException(ErrorCode errorCode, Throwable throwable) {
super(errorCode.getMessage(), throwable); this.errorCode = errorCode; } public ErrorCodeException(ErrorCode errorCode) {
super(errorCode.getMessage(), null); this.errorCode = errorCode; } public ErrorCodeException(String code, String message, Throwable throwable) {
super(message, throwable); this.errorCode = new DefaultErrorCode(code, message); } public ErrorCode getErrorCode() {
return errorCode; } }
public enum DailyManageErrorCode implements ErrorCode {
/** * 请求参数异常 */ PARAMETER_ERROR("DailyManageErrorCode.REQUEST_PARAMETER_ERROR","请求参数异常:%s"), /** * 没有访问权限 */ NO_AUTH_ERROR("InstitutionalOverviewErrorCode.NO_AUTH_ERROR","用户没有%s权限"), /** * 请求参数跟数据库重复 */ PARAMETER_DUPLICATION("DailyManageErrorCode.PARAMETER_DUPLICATION","%s填写重复") ; private String errorCode; private String errorMessage; private String[] args; DailyManageErrorCode(String errorCode, String errorMessage) {
this.errorCode = errorCode; this.errorMessage = errorMessage; } public DailyManageErrorCode withArgs(String... args) {
this.args = args; return this; } @Override public String getCode() {
return errorCode; } @Override public String getMessage() {
return String.format(errorMessage, (Object[])args); } }

转载于:https://www.cnblogs.com/wwqwwq/p/10981392.html

你可能感兴趣的文章
TurboMail邮件系统全新智能公告模块升级上线
查看>>
中小企业邮件网关,路在何方
查看>>
世界范围网络中断 祸起瞻博路由器
查看>>
Report Builder 3.0报表访问权限设置
查看>>
shrio 权限管理filterChainDefinitions过滤器配置
查看>>
linux网卡的详细配置
查看>>
sbc(六) Zuul GateWay 网关应用
查看>>
HBase Config File
查看>>
Circle Queue in C
查看>>
LVS环境搭建
查看>>
vmware安装ubuntu1404后鼠标左键无法使用的解决方法
查看>>
[转]Nuget Tool
查看>>
个人介绍(来者必看)
查看>>
一段简易的判断手机屏幕横屏竖屏的JS代码
查看>>
新闻报道翻译研讨20091128 饱受战争冲突之苦的国家腐败根深蒂固Corruption Digs Deepest in Countries in Conflict...
查看>>
Redis的集群安装以及rehash重新迁移教程指南
查看>>
软件公司创业秘籍
查看>>
教您用最简单的方法设置电脑自动关机
查看>>
__getattr__,settr
查看>>
curl返回值详解
查看>>