什么是自定义异常?
自己定义的异常类
为什么要自定义异常?
为了更准确的获取到异常信息。
比如我在登陆的controller中没设置自定义异常的是只能是返回error,其他任何原因我都不清楚
@PostMapping("/login")
public Result login(@RequestBody UserDto userDto){
UserDto login = userService.login(userDto);
if(login ==null){
return Result.error(Constants.CODE_600,"用户名或密码错误");
}else {
return Result.success(login);
}
怎样自定义异常?
第一步:创建exception报
第二步:定义全局异常处理类
关于@ControllerAdvice注解:
主要用途,通过在@ExceptionHandler
注解中定义的方法中捕获异常,可以统一处理应用程序中发生的各种异常。可以在@ControllerAdvice
类中声明多个@ExceptionHandler
方法处理不同类型的异常,并为它们提供相应的处理逻辑
@ControllerAdvice
public class GlobalExceptionHandler {
}
第三步:定义自己的异常类
要继承RuntimeException类
@Getter
public class LoginException extends RuntimeException {
private String code;
private String msg;
public LoginException(String code, String msg) {
this.msg= msg;
this.code = code;
}
}
第四步:将自己定义的异常类放到全局异常处理类中
//自己定义的LoginException类
@ExceptionHandler(LoginException.class)
@ResponseBody
public Result handle(LoginException se){
return Result.error(se.getCode(), se.getMsg());
}
引用异常类
one非空时返回result对象,空时抛出异常