java.lang.IllegalStateException:
Ambiguous
@ExceptionHandler method mapped
for [class org.springframework.web.bind.MethodArgumentNotValidException]:
{public com.book.springtest.exception.AjaxResponse com.book.springtest.exception.WebExceptionHandler.
handleILLegalException(java.lang.IllegalArgumentException),
public com.book.springtest.exception.AjaxResponse com.book.springtest.exception.WebExceptionHandler.
handleValidException(org.springframework.web.bind.MethodArgumentNotValidException)}
处理IllegalArgumentException异常。
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public AjaxResponse handleILLegalException(IllegalArgumentException e) {
return AjaxResponse.error(
CommonExceptionType.USER_INPUT_ERROR,
e.getMessage());
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public AjaxResponse handleValidException(
MethodArgumentNotValidException e) {
FieldError fieldError = e.getBindingResult().getFieldError();
return AjaxResponse.error(
CommonExceptionType.USER_INPUT_ERROR,
fieldError.getDefaultMessage());
SpringBoot项目(18)—处理异常之@ExceptionHandler注解
处理异常的ExceptionHandler必须要和出现异常的方法在同一个Controller下才可以
没有很好的复用性,代码冗余
1.在能产生异常的方法所在的controller类中,添加处理异常的方法
处理异常的方法用@ExceptionHandler注解,并且返回值不能是String,必须是ModelAndView
@ExceptionHandler注解可以指定多个异常的类型,通过value来进行指定,注意是.class
@ControllerAdvice
publicclassGlobalExceptionHandler{
privatestaticfinalLoggerlogger=LoggerFactory.getLogger(GlobalExceptionHandler.class);
*处理自定义的业务异常
*@paramreq
*@parame
*@return
@ExceptionHandler(...
第一种,直接在Controller层写@ExceptionHandler注解,对于指定异常,可以处理并返回一个视图或者body:
@Controller
public class HelloWorld {
@RequestMapping("test")
public String test(int flag) throws FileNotFoundException {
if (1 == flag) {
throw new FileNotFoundE
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annota...
@ExceptionHandler()
public String handleExeption2(Exception ex) {
System.out.println("抛异常了:" + ex);
ex.printStackTrace();
String resultStr = "异常:默认";
return resultStr;
当我们使用这
前几节小博老师给大家介绍了SpringMVC异常处理两种方法,今天继续介绍使用注解方式进行异常处理的方式@ExceptionHandler。 @ExceptionHandler只有一个参数value,指定需要处理的异常类型 。是一个数组类型。如:
@ExceptionHandler(value={NullPointerException.class,IllegalArgumentExceptio
AOP思想:通过@ControllerAdvice指定拦截哪个Controller,然后通过@ExceptionHandler指定要拦截的异常类型,在方法里面做拦截之后的处理。
@RestControllerAdvice = @ResponseBody + @ControllerAdvice = @ResponseBody + @Component
@Slf4j
// 指定要拦截的Controller
@RestControllerAdvice(basePackages = "com.atguigu.gu
在SpringMVC重要注解@ExceptionHandler,只能在当前Controller中处理异常。但当配合@ControllerAdvice一起使用的时候,就可以摆脱那个限制了。
package com.somnus.advice;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.s...
对于与数据库相关的 Spring MVC 项目,我们通常会把 事务 配置在 Service层,当数据库操作失败时让 Service 层抛出运行时异常,Spring 事物管理器就会进行回滚。
如此一来,我们的 Controller 层就不得不进行 try-catch Service 层的异常,否则会返回一些不友好的错误信息到客户端。但是,Controller 层每个方法体都写一些模板化...
JSR303 是一套JavaBean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些
注解加在我们JavaBean的属性上面(面向注解编程的时代),就可以在需要校验的时候进行校验了,
在SpringBoot中已经包含在starter
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
我这个项目比较老,用的 spring 版本是 spring3的。。。
springMVC没有 做 异常的拦截,,,所以我就用了 @exceptionhandler 拦截一下 异常。。。
可是发现没有起作用。。。根本没有进入这个 方法里面。。。
怎么回事?? 随便百度一下,,,也没有发现什么解...
@ExceptionHandler是Spring框架中的一个注解,用于处理全局异常。当应用程序中发生异常时,@ExceptionHandler注解可以捕获并处理这些异常,以便提供自定义的错误处理逻辑。
使用@ExceptionHandler注解的步骤如下:
1. 在控制器类中定义一个带有@ExceptionHandler注解的方法,用于处理特定类型的异常。该方法可以有多个参数,其中第一个参数是异常类型,后面可以跟随其他参数,如HttpServletRequest或HttpServletResponse等。
2. 在@ExceptionHandler注解中指定要处理的异常类型。可以使用value属性指定单个异常类型,也可以使用多个value属性指定多个异常类型。
3. 在处理方法中编写自定义的错误处理逻辑。可以根据需要进行日志记录、返回自定义错误信息或执行其他操作。
以下是一个使用@ExceptionHandler注解的示例:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = {Exception.class})
public ResponseEntity<String> handleException(Exception ex) {
// 自定义错误处理逻辑
String errorMessage = "An error occurred: " + ex.getMessage();
return new ResponseEntity<>(errorMessage, HttpStatus.INTERNAL_SERVER_ERROR);
在上面的示例中,`handleException`方法使用`@ExceptionHandler`注解来处理`Exception`类型的异常。当应用程序中发生`Exception`类型的异常时,该方法会被调用,并返回一个包含自定义错误信息的`ResponseEntity`对象。