异常处理的示例
接下来,我们将通过一个完整的示例来演示如何使用SpringMVC处理异常。假设我们正在开发一个用户注册应用程序,如果用户在注册过程中输入了无效的电子邮件地址,我们需要捕获并处理该异常。
以下是一个使用@ExceptionHandler注解处理无效电子邮件地址异常的示例:
代码语言:javascript复制@Controller
public class UserController {
@PostMapping("/register")
public ResponseEntity<String> registerUser(@RequestParam String email, @RequestParam String password) throws InvalidEmailException {
if(!isValidEmail(email)) {
throw new InvalidEmailException("Invalid email address.");
}
// 用户注册逻辑
return ResponseEntity.ok("User registered successfully.");
}
@ExceptionHandler(InvalidEmailException.class)
public ResponseEntity<String> handleInvalidEmailException(InvalidEmailException ex) {
return ResponseEntity
.status(HttpStatus.BAD_REQUEST)
.body(ex.getMessage());
}
private boolean isValidEmail(String email) {
// 验证电子邮件地址是否有效
return true;
}
public static void main(String[] args) {
SpringApplication.run(UserController.class, args);
}
}
class InvalidEmailException extends Exception {
public InvalidEmailException(String message) {
super(message);
}
}
在这个示例中,我们定义了一个UserController控制器类,其中包含一个名为registerUser的方法,该方法接受email和password两个请求参数。如果email参数不是有效的电子邮件地址,该方法将抛出一个InvalidEmailException异常。我们还定义了一个handleInvalidEmailException方法来处理InvalidEmailException异常。当应用程序发生此异常时,handleInvalidEmailException方法将返回一个HTTP状态码为400的响应,并将异常消息包含在响应体中。
在最后部分的代码中,我们还定义了一个InvalidEmailException异常类来表示无效的电子邮件地址异常。这个异常类扩展了Exception类,并带有一个String类型的message属性,用于存储异常消息。