异常分为:预期异常和Runtime异常
异常处理的思路:
springmvc提供全局的异常处理器(一个系统只有一个异常处理器)进行统一的异常处理
在程序当中遇到异常时 我们手工抛出throws Exception
dao抛给service service抛给controller controller抛给前端控制器 前端控制器调用全局异常处理器
1.定义一个异常类
package cn.elec.exception;
/**
* 自定义异常类
* @author
*
*/
public class NormalException extends Exception {
/**
*
*/
private static final long serialVersionUID = 7144771828212718116L;
//异常信息写到message里边
public String message;
public NormalException(String message){
super(message);
this.message=message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
2.定义全局异常处理器
系统遇到异常 我们在程序当中手工抛出
处理思路:解析出当前的异常类型
如果该异常类型是系统自定义异常 直接取出异常信息在错误页面当中展现
如果不是自定义异常 那么需要构造一个系统自定义的异常类 信息为:未知错误
SpringMVC提供了一个HandlerExceptionResolver接口
3.在springmvc的配置文件当中配置全部异常处理器
<!-- 配置全局异常处理器-->
<beanclass="cn.elec.exception.AllClassExceptionResolver"></bean>
只要AllClassExceptionResolver实现了HandlerExceptionResolver接口那么srpingmvc就会将其当成一个异常处理器
应该在哪一层抛出异常:
如果与业务功能相关的异常 那么在service层抛出
如果跟业务没关系的异常在controller当中抛出 如:判断参数是否为空 不能用乱字符等等
在dao层一般不会抛出异常
具体的异常处理可以参见:
http://blog.csdn.net/ufo2910628/article/details/40399539