问题:ssh3层架构,即action, service, dao层,当需要捕获异常的时候,一般在action用try{} catch捕获,为什么这样书写呢?
因为service层是需要给外部调用的,不局限于给action层调用,也可以通过rmi等方式给外部调用,如果在service层捕获异常的话,那其他调用该service的类则没法对异常做不同的处理,同理,dao层也一样。
做法:故常用的做法就是:dao和service层直接throws 抛给调用者,action层用try{}catch来捕获并处理。
举例:
dao:
public void get() throws SQLException{
//code
}
service:
public void do() throws Exception{
dao.get()
}
action:
public String execute(){
try{
service.do();
} catch(Exception e){
log.error(e, e);
}
}