Aop中java.lang.reflect.UndeclaredThrowableException

在Aop中抛出自定义的异常失败,直接抛出了500,自定义的异常信息message没有。
这种情况下,请检查自定义异常的继承方式,在Aop中只能抛出的异常必须继承RunTimeException或其子类;

接下来,让我们通过一个简单的demo验证下:

Exception的测试:
代码:

    @Around("cut()")
    public Object FilterUser(ProceedingJoinPoint joinPoint)throws Throwable {
        Object result;
        Object[] args = joinPoint.getArgs();
            //访问目标方法的参数:
            if (args != null && args.length > 1) {
                String userId = String.valueOf(args[1]);
                if (StringUtils.isEmpty(userId)) {
                    return "未登录";
                }
                if (!list.contains(userId)) {
                    throw new Exception("dd");
                }
            }

            //服务调用执行
            result = joinPoint.proceed(args);
            return result;

    }

Excepton异常的返回,直接500了。

{
    "timestamp": 1575189707971,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "java.lang.reflect.UndeclaredThrowableException",
    "message": "No message available",
    "path": "/zqm/annotation/testAop"
}

RunTimeException测试:

    @Around("cut()")
    public Object FilterUser(ProceedingJoinPoint joinPoint)throws Throwable {
        Object result;
        Object[] args = joinPoint.getArgs();
            //访问目标方法的参数:
            if (args != null && args.length > 1) {
                String userId = String.valueOf(args[1]);
                if (StringUtils.isEmpty(userId)) {
                    return "未登录";
                }
                if (!list.contains(userId)) {
                    throw new RuntimeException("dd");
                }
            }

            //服务调用执行
            result = joinPoint.proceed(args);
            return result;

    }

结果:果然抛出自定义的异常信息

{
    "timestamp": 1575190143677,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "java.lang.RuntimeException",
    "message": "dd",
    "path": "/zqm/annotation/testAop"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值