Java SpringMVC的自定义异常类
在 Java SpringMVC 中,异常处理是非常重要的一部分。通过自定义异常类,我们可以更好地处理异常情况,并提供更好的用户体验。本文将详细讲解如何创建和使用自定义异常类,包括如何创建异常类、如何在 Controller 中使用异常类、如何在全局异常处理器中处理异常等,并提供两个示例说明。
创建异常类
在 Java 中,我们可以通过继承 Exception 或 RuntimeException 类来创建自定义异常类。下面是一个示例代码,演示如何创建自定义异常类:
public class MyException extends RuntimeException {
private String message;
public MyException(String message) {
this.message = message;
}
@Override
public String getMessage() {
return message;
}
}
在上面的代码中,我们创建了一个 MyException 类,继承 RuntimeException 类。在构造函数中,我们传入异常信息,并在 getMessage 方法中返回异常信息。
在 Controller 中使用异常类
在 Controller 中,我们可以通过抛出自定义异常类来处理异常情况。下面是一个示例代码,演示如何在 Controller 中使用自定义异常类:
@Controller
public class MyController {
@GetMapping("/test")
public String test() {
throw new MyException("发生异常");
}
}
在上面的代码中,我们创建了一个 MyController 类,并在 test 方法中抛出 MyException 异常。
在全局异常处理器中处理异常
在 SpringMVC 中,我们可以通过实现 HandlerExceptionResolver 接口来处理全局异常。下面是一个示例代码,演示如何在全局异常处理器中处理异常:
@ControllerAdvice
public class GlobalExceptionHandler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
ModelAndView modelAndView = new ModelAndView();
if (ex instanceof MyException) {
modelAndView.addObject("message", ex.getMessage());
modelAndView.setViewName("error");
}
return modelAndView;
}
}
在上面的代码中,我们创建了一个 GlobalExceptionHandler 类,并实现了 HandlerExceptionResolver 接口。在 resolveException 方法中,我们判断异常类型是否为 MyException,如果是,则将异常信息添加到 ModelAndView 中,并设置视图名称为 error。
示例说明
示例1:自定义异常类
在本示例中,我们将演示如何创建自定义异常类。下面是一个示例代码,演示如何创建自定义异常类:
public class MyException extends RuntimeException {
private String message;
public MyException(String message) {
this.message = message;
}
@Override
public String getMessage() {
return message;
}
}
在上面的代码中,我们创建了一个 MyException 类,继承 RuntimeException 类。在构造函数中,我们传入异常信息,并在 getMessage 方法中返回异常信息。
示例2:在 Controller 中使用异常类
在本示例中,我们将演示如何在 Controller 中使用自定义异常类。下面是一个示例代码,演示如何在 Controller 中使用自定义异常类:
@Controller
public class MyController {
@GetMapping("/test")
public String test() {
throw new MyException("发生异常");
}
}
在上面的代码中,我们创建了一个 MyController 类,并在 test 方法中抛出 MyException 异常。当用户访问 /test 路径时,将会抛出 MyException 异常,并返回异常信息。
示例3:在全局异常处理器中处理异常
在本示例中,我们将演示如何在全局异常处理器中处理异常。下面是一个示例代码,演示如何在全局异常处理器中处理异常:
@ControllerAdvice
public class GlobalExceptionHandler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
ModelAndView modelAndView = new ModelAndView();
if (ex instanceof MyException) {
modelAndView.addObject("message", ex.getMessage());
modelAndView.setViewName("error");
}
return modelAndView;
}
}
在上面的代码中,我们创建了一个 GlobalExceptionHandler 类,并实现了 HandlerExceptionResolver 接口。在 resolveException 方法中,我们判断异常类型是否为 MyException,如果是,则将异常信息添加到 ModelAndView 中,并设置视图名称为 error。当用户访问 /test 路径时,将会抛出 MyException 异常,并返回异常信息。全局异常处理器将会捕获该异常,并返回错误页面。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java SpringMVC的自定义异常类 - Python技术站