下面是SpringBoot @ExceptionHandler与@ControllerAdvice异常处理的详解。
异常处理概述
异常是在程序运行过程中可能出现的错误或意外情况,它会导致程序无法正常执行。在Java中,异常处理是必不可少的一部分,能够提高程序的鲁棒性和可靠性。在SpringBoot中,常见的异常类型包括:空指针异常、请求方法不支持异常、请求参数错误异常等。
@ExceptionHandler与@ControllerAdvice
SpringBoot提供了一种基于注解的异常处理机制,可以通过使用@ExceptionHandler和@ControllerAdvice注解来处理异常。
@ExceptionHandler
@ExceptionHandler用于在Controller中对特定类型的异常进行处理。使用@ExceptionHandler可以让程序在捕获到特定异常时,执行特定的异常处理逻辑。
@ControllerAdvice
@ControllerAdvice则是用于全局异常处理,它可以用于对所有Controller中的异常进行处理。使用@ControllerAdvice时需要搭配@ExceptionHandler注解一起使用。
SpringBoot @ExceptionHandler与@ControllerAdvice异常处理的示例
下面给出几个使用SpringBoot @ExceptionHandler与@ControllerAdvice异常处理的示例。
示例一:空指针异常处理
在Controller中进行空指针异常处理,可以通过如下代码实现:
@RestController
public class UserController {
@GetMapping("/user")
public User getUser() {
User user = null;
// 模拟空指针异常
String userName = user.getUserName();
return user;
}
// @ExceptionHandler注解用于指定处理空指针异常的方法
@ExceptionHandler(NullPointerException.class)
public String handleException() {
return "空指针异常";
}
}
在上面的代码中,我们模拟了一个空指针异常,并且使用@ExceptionHandler注解指定了对空指针异常进行处理的方法。在handleException方法中,我们实现了对空指针异常的处理逻辑,返回“空指针异常”。
示例二:请求参数错误异常处理
在Controller中进行请求参数错误异常处理,可以通过如下代码实现:
@RestController
public class UserController {
@GetMapping("/user")
public String getUserInfo(@RequestParam(value = "id") Integer id) {
if (id == null) {
// 抛出自定义的请求参数错误异常
throw new ParameterException("请求参数错误");
}
return "user info";
}
}
在上面的代码中,我们使用@RequestParam注解获取请求参数,并且在判断参数为null时,抛出自定义的请求参数错误异常ParameterException。在自定义异常类中,我们使用了自定义的构造函数来传递错误信息。
public class ParameterException extends RuntimeException {
public ParameterException(String message) {
super(message);
}
}
在处理请求参数错误异常时,我们可以在使用@ControllerAdvice注解的类中实现如下方法:
@ControllerAdvice
public class GlobalExceptionAdvice {
// @ExceptionHandler注解用于指定处理请求参数错误异常的方法
@ExceptionHandler(value = ParameterException.class)
@ResponseBody
public ResponseEntity<String> handleParameterException(ParameterException e) {
return new ResponseEntity<>("请求参数错误", HttpStatus.BAD_REQUEST);
}
}
在上面的代码中,我们使用@ControllerAdvice注解,配合@ExceptionHandler注解实现了对请求参数错误异常的处理逻辑,返回一个含有请求参数错误信息的ResponseEntity。在handleParameterException方法中,我们指定了要处理的异常类型ParameterException,并且在方法中设置了返回的状态码和消息。最终,SpringBoot会将返回的ResponseEntity封装成JSON格式的响应数据返回给前端。
以上就是使用SpringBoot @ExceptionHandler与@ControllerAdvice异常处理的示例。通过上面的代码,我们可以看到,使用SpringBoot异常处理机制能够帮助我们更好地处理程序中的异常情况,提高程序的可靠性和鲁棒性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot @ExceptionHandler与@ControllerAdvice异常处理详解 - Python技术站