当在页面中发送了请求,请求被系统处理时出现错误时,如果没有特别处理在请求过程中出现的异常信息时,那么返回给用户的则是后台的异常信息页面;为避免直接将这报错的页面呈现给用户,可对这报错进行处理。
分层异常
在本系统中的后台处理有分3个层,分别是action、service和dao层,每个层次都有可能出现相应错误。
① Action层可能出现解析请求参数、返回结果有问题;
② Service 层则可能出现请求中要做的业务操作出现问题;出现了问题要根据实际情况判断是否会影响本次操作结果,action中要根据异常信息进行判断然后确定是否操作成功;
③ dao层也可能出现在操作数据库时出现错误;而此种错误一般都是致命的会影响操作结果。
以此;在3个层次中至少要有两种类型的异常信息来标识。
制定总的系统异常类:
Action层异常类:
Service层异常类:
异常处理
全局异常映射
在struts总配置文件(struts.xml)中配置一个包括 全局异常映射和全局结果的package,然后让其它所有的业务模块的struts配置文件(*-struts.xml)继承后便可处理由后台抛出的特定异常并处理。
在总配置文件struts.xml中:
在子业务模块中的*-sturts.xml中继承总配置文件中的package:
在具体的后台处理代码中抛出系统异常:
如果在action中只抛出了ActionException,那么非此异常出现时,如果在全局异常映射中配置了java.lang.Exception 异常类的映射,同样可以捕获。
制定返回类型(StrutsResultSupport)
在有特殊情况时;如果没有异常信息,但是有错误并且有错误信息等内容;此时也需要进行友好的错误处理的话,那么可以借助StrutsResultSupport 返回结果类型来实现特定处理。此种方式先需要继承StrutsResultSupport ,然后可以在子类中获取本次请求的相关信息,再根据相关信息进行结果处理:
在struts.xml总配置文件中定义全局处理类型和全局处理结果: