异常处理过程

我们可以直接在Controller 里创建 带有 @ExceptionHandler 注解的异常处理方法。

@ExceptionHandler({ArithmeticException.class})
	public String exception(Exception e) {//出現java.lang.ArithmeticException异常时交由该方法处理
		System.out.println(e.getMessage());
		return "error";
	}

也可以单独创建一个java类加上 @ControllerAdvice 对所有Controller 类里的同样异常进行处理。

@ControllerAdvice
public class MathExceptionHandler {
	
	@ExceptionHandler(ArithmeticException.class)
	public String exception(Exception e) {
		System.out.println(e.getMessage());
		return "userinfo/error";
	}
}

同时也可以配置在 Spring文件中配置 SimpleMappingExceptionResolve 用于服务器端当发生异常时根据发生的异常类型跳转到指定的视图以显示异常信息

<!-- 配置SimpleMappingExceptionResolver视图解析器 -->
	<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<!-- 配置异常属性名:exceptionAttribute默认值为exception,此时jsp页面通过${exception}显示异常信息;添加<property name="exceptionAttribute" value="ex"></property>配置后,则通过${ex}显示异常信息 -->
		<property name="exceptionAttribute" value="ex"></property>
		<property name="exceptionMappings">
			 <props>
			 	<!-- 服务器端异常均指向error.jsp页面 -->
		        <prop key="java.lang.Throwable">error</prop> 
		     </props> 
		</property>
	</bean>

 

在SpringMVC一个请求执行过程中,一旦爆发了一个异常就会在 doDispatch 中被捕获,放入 dispatchException 中然后传给 processDispatchResult 方法处理。

 

在进入processDispatchResult ,判断exception 不为空,向下执行 processHandlerException

 

 

对每一个解析器调用异常解析函数,返回一个视图,此函数结束之后返回至 render 方法。render参考今天的同一篇博文。

 

进入 resolveException 执行异常解析。

 在上述的接口中我们可以看出 使用SimpleMappingException 的接口

 

 

爬。有点乱。先码着,回来再改。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值