java在进行全局捕获异常时,总是不起作用,无法正常捕获异常,这个如此处理?具体代码如下
全局捕获异常的类ExceptionHandlerAdvice
package com.xjc.common.handler;
import com.xjc.common.exception.MyException;
import com.xjc.common.utils.ResultUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.*;
import java.nio.file.AccessDeniedException;
/**
* @ClassName com.xjc.common.handler
* @Author bill
* @Describe 统一异常处理
*/
@Slf4j
//@RestControllerAdvice
@ControllerAdvice
public class ExceptionHandlerAdvice {
/**
* 参数格式异常处理
*/
@ExceptionHandler({IllegalArgumentException.class})
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResultUtils<String> badRequestException(IllegalArgumentException ex) {
log.error("参数格式不合法:{}", ex.getMessage());
return new ResultUtils<>(HttpStatus.BAD_REQUEST.value() + "", "参数格式不符!");
}
/**
* 参数缺失异常处理
*/
@ExceptionHandler({MissingServletRequestParameterException.class})
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResultUtils<String> badRequestException(Exception ex) {
return new ResultUtils<>(HttpStatus.BAD_REQUEST.value() + "", "缺少必填参数!");
}
@ExceptionHandler(Exception.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
public ResultUtils<String> handleUnexpectedServer(Exception ex) {
log.error("系统异常:", ex);
return ResultUtils.fail("系统发生异常,请联系管理员");
}
/**
* 系统异常处理
*/
@ExceptionHandler(Throwable.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ResultUtils<String> exception(Throwable throwable) {
log.error("系统异常", throwable);
return new ResultUtils<>(HttpStatus.INTERNAL_SERVER_ERROR.value() + "系统异常,请联系管理员!");
}
@ExceptionHandler(MyException.class)
@ResponseBody
public ResultUtils<String> resolveMyException(MyException ex){
//打印错误信息
ex.printStackTrace();
return ResultUtils.fail(ex.getMessage());
}
}
MyException类代码如下
package com.xjc.common.exception;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName com.xjc.entity
* @Author bill
* @Describe
*/
@NoArgsConstructor
@Data
@AllArgsConstructor
@Builder
public class MyException extends RuntimeException{
private int code;
private String message;
}
登录的时候如果没有该用户则抛出异常,代码如下图
正常来讲前端收到的错误编码是205 信息是用户名不存在但是实际上是前台收到的信息是500,也没有进入ExceptionHandlerAdvice的resolveMyException方法中,这个是哪里的问题?
后台报错信息如下