Spring MVC 异常处理

Spring MVC对异常的处理提供了两种常用的处理方式

一种是自定方义:建创一个类,在对应的方法面加入@ExceptionHandler标签,其成为异常理里类,需注意的是,如果只是在一个Controller中,那么只对当前的这个类中的controller起作用,如需作为一个公共的异常处理类,则需单独写在一个类里面,并注上@ControllerAdvice标签,同时相同的异常只能用一种方法处理,否则会报错
后台:

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

/*使用@ControllerAdvice标签后,所有的Controller抛出的异常都会被处理*/
@ControllerAdvice
public class ErrorException {
	/**
	 * 此利方法不能将ex做为值传入视图中
	 * @param ex
	 * @return
	 */
	/* @ExceptionHandler标签注解方式,后面参数是异常对像的类 */
	//@ExceptionHandler({ArithmeticException.class})
	public String HandlerArithmeticException1(Exception ex) {
		System.out.println(ex.getMessage());
		/* error为jsp视图名 */
		return "error";
	}
	
	/**
	 * 此方法可以将ex传入视图中,视图中可以用${ex}标签来接收
	 * @param ex
	 * @return
	 */
	/* @ExceptionHandler标签注解方式,后面参数是异常对像的类 */
	//@ExceptionHandler({ArithmeticException.class})
	public ModelAndView HandlerArithmeticException2(Exception ex) {
		ModelAndView mv=new ModelAndView();
		/* error为jsp视图名 */
		mv.setViewName("error");
		mv.addObject("exception", ex.getMessage());
		return mv;
	}
	

}

前台:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>页面异常 error</title>
</head>
<body>

<h2>页面异常 error</h2>
错误信息${exception}
</body>
</html>

第二种方法:是使用Spring MVC进行配置,将SimpleMappingExceptionResolver类注入到容器中

Springmvc.xml

<!-- 异常处理配置 -->
	<bean
		class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<!-- exceptionAttribute不写时则默义为exception,此值在jsp视图${exception}调用时使用 -->
		<property name="exceptionAttribute" value="exception"></property>
		<property name="exceptionMappings">
			<props>
				<!-- java.lang.ArithmeticException为抛出的异常类,error为对应的视图名 -->
				<prop key="java.lang.ArithmeticException">error</prop>
			</props>
		</property>

	</bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值