springMVC 全局异常处理

早期对于异常的全局处理是在配置中写的,如下:

<!-- 全局异常配置 start -->
	<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<property name="exceptionMappings">
			<props>
				<prop key="java.lang.Exception">errors/error</prop>
				<prop key="java.lang.Throwable">errors/err</prop>
			</props>
		</property>
		<property name="statusCodes">
			<props>
				<prop key="errors/error">500</prop>
				<prop key="errors/404">404</prop>
			</props>
		</property>
		<!-- 设置日志输出级别,不定义则默认不输出警告等错误日志信息 -->
		<property name="warnLogCategory" value="WARN"></property>
		<!-- 默认错误页面,当找不到上面mappings中指定的异常对应视图时,使用本默认配置 -->
		<property name="defaultErrorView" value="errors/error"></property>
		<!-- 默认HTTP状态码 -->
		<property name="defaultStatusCode" value="500"></property>
	</bean>
	<!-- 全局异常配置 end -->

但现在spring3.0注解很方便强大,所以更多的开发者都倾向于用注解来代替原来繁琐的配置,而对于异常也有相应的注解,我个人并不觉得在配置文件中配置全局异常很麻烦,如果整个项目都用了注解,而你再用配置就显得不伦不类,所以就用一个简单的方法来代替。写一个公共的controller,用@ExceptionHandler来拦截异常,然后此controller被其他controller继承,这样就用很少的代码解决异常拦截的问题,公共controller代码如下:
@Controller
public class ExceptionHandlerController {
	@ExceptionHandler(RuntimeException.class)
	public String operateExp(RuntimeException ex,HttpServletRequest request){
		System.out.println("this is for test");
		//mod.addAttribute("err", ex.getMessage()); //ExceptionHandler处理异常时,Model,是不能用的,否则会不起作用,这里用了HttpServletRequest
		request.setAttribute("err", ex.getMessage());
		return "public/error";
	}
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值