在SpringMVC项目开发中,使用自定义异常可以有效提高代码的可维护性和可读性。通过自定义异常,我们可以将不同类型的异常进行分类,更准确地进行错误处理和错误信息提示。

/**
 * 自定义异常:业务异常
 */
public class BusinessException extends RuntimeException {

    public BusinessException(String message) {
        super(message);
    }

    public BusinessException(String message, Throwable cause) {
        super(message, cause);
    }

}

/**
 * 自定义异常:权限异常
 */
public class PermissionException extends RuntimeException {

    public PermissionException(String message) {
        super(message);
    }

    public PermissionException(String message, Throwable cause) {
        super(message, cause);
    }

}

在处理控制器方法时,如果遇到业务异常或权限异常,可以直接抛出自定义异常,并在全局异常处理器中进行统一处理。

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(BusinessException.class)
    public ModelAndView handleBusinessException(BusinessException ex) {
        ModelAndView modelAndView = new ModelAndView();
        // 自定义处理业务异常的逻辑
        modelAndView.addObject("errorMessage", ex.getMessage());
        modelAndView.setViewName("error/businessError");
        return modelAndView;
    }

    @ExceptionHandler(PermissionException.class)
    public ModelAndView handlePermissionException(PermissionException ex) {
        ModelAndView modelAndView = new ModelAndView();
        // 自定义处理权限异常的逻辑
        modelAndView.addObject("errorMessage", ex.getMessage());
        modelAndView.setViewName("error/permissionError");
        return modelAndView;
    }

    // 其他异常处理方法...

}

通过以上方式,我们可以将异常分类,使得代码更加清晰和易于维护。同时,全局异常处理器的统一处理也提供了更好的用户体验,可以根据具体异常类型显示不同的错误页面。在实际项目开发中,建议根据业务需求自定义更多类型的异常,并编写对应的异常处理逻辑,以提高项目代码的易读性和可维护性。