Spring实战16——Spring MVC 异常处理

为基础控制器类添加通知,统一处理多个控制器类抛出的异常:

1.在自定义异常类中添加@ResponseStatus注解,将映射为某一个http状态码

@ResponseStatus(value=HttpStatus.EXPECTATION_FAILED, reason="can't upload")
public class FailToUploadException extends RuntimeException {

}

2.控制器通知类@ControllerAdvice,统一处理所有控制器的异常。注意@ControllerAdvice 使用了@Component 注解,所以还是要在配置类中添加扫描@ControllerAdvice 所在的包

3.编写方法添加@ExceptionHandler,返回一个视图名称。

@ControllerAdvice
public class AllExceptionHandler {
	
	/**
	 * @ExceptionHandler 方法
	 *	 当抛出FailToUploadException异常时,就会执行这个方法
	 * @return
	 */
	@ExceptionHandler(FailToUploadException.class)
	public String failToUploadHandler() {
		return "fail";//异常则返回fail.jsp 视图
	}
}

4.Controller 中的处理器方法

@RequestMapping(value = "/fileupload", method = RequestMethod.POST)
	public String processFileUplaod(@RequestPart("picture") MultipartFile picture) {
		try {
			//假如有错误
		} catch (Exception e) {
			e.printStackTrace();
			throw new FailToUploadException();//抛出我们自定义的含@ResponseStatus 的异常类
		}
		return "ok";//正常返回ok.jsp视图
	}

猜你喜欢

转载自blog.csdn.net/pigqhf/article/details/89312962