@ExceptionHandler 与 @ControllerAdvice

记录mark.
spring 注解@ExceptionHandler 只在本类种有效,

当需要拦截全局异常时,需结合 @ControllerAdvice

第一种本类中生效

@Validated
@Controller
@RequestMapping("/shi")
public class ShiController {

    @RequestMapping("/vali")
    @ResponseBody
    public String vali(@NotBlank(message = "名称不能为空")  String name){

        return JSON.toJSONString("hello world");
    }

    /**
     * ExceptionHandler 只针对当前类有效
     * 如需要结合全局使用需要结合 @ControllerAdvice
     * @param request
     * @param response
     * @param exception
     * @return
     */
    @ExceptionHandler({ConstraintViolationException.class})
    public String handleExce(HttpServletRequest request, HttpServletResponse response,Exception exception){
        System.out.println("handleExce");
        System.out.println("异常: " + exception);
        request.setAttribute("msg",exception);
        return "indexTest.html";
    }


}

第二种全局生效

//测试类
@Validated
@Controller
@RequestMapping("/shi")
public class ShiController {

    @RequestMapping("/vali")
    @ResponseBody
    public String vali(@NotBlank(message = "名称不能为空")  String name){

        return JSON.toJSONString("hello world");
    }

}



//全局异常类
@ControllerAdvice
public class ErrorController {


    @ExceptionHandler({ConstraintViolationException.class})
    public String handleException(HttpServletRequest request, HttpServletResponse response,Exception exception){
        System.out.println("异常: " + exception);
        request.setAttribute("msg",exception);
        return "indexTest.html";
    }

}

--------------------------------------------------------------------------------------------------------------------------

最后在第一种情况下可以结合HandlerExceptionResolver.class 全局异常使用,当其他类有异常需要抛出,处理业务时,可以考虑使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值