CRM-系统异常和错误的简单处理

CRM-系统异常和错误的简单处理

当我们我系统出现错误和异常时,为了让用户得到更好的体验,不看到抽象错误界面,
并且为了让我开发人员更好的对系统错误进行快速的查找和处理,我们应该对整个系统的错误和异常进行处理。
这里只是做了简单处理。怎么深入,我还没学过。。。。。。。。。

异常处理

系统可能出现的异常:(异常分类)
dao: 比较致命的操作异常,是会有很大可能影响整次的请求
service: 业务层的异常信息需要自定义
action: 控制层的异常信息需要自定义

项目使用了SSH框架。

全局异常映射

在struts总配置文件(struts.xml)中配置一个包括 全局异常映射和全局结果的package,然后让其它所有的业务模块的struts配置文件(*-struts.xml)
继承后便可处理由后台抛出的特定异常并处理。在总配置文件struts.xml中:

    //系统异常
    public abstract class SysException extends Exception {

        private String errorMsg;

        public SysException() {
            super();
        }

        public SysException(String message) {
            super(message);
            errorMsg = message;
        }
        public String getErrorMsg() {
            return errorMsg;
        }

        public void setErrorMsg(String errorMsg) {
            this.errorMsg = errorMsg;
        }

    }

    public class ServiceException extends SysException {

        public ServiceException() {
            super("业务操作错误!");
        }

        public ServiceException(String message) {
            super(message);
        }


    }

    <!-- 配置全局结果及异常映射 -->
    <package name="base-default" extends="struts-default">
        <!-- 全局返回结果 -->
        <global-results>
            <result name="sysError">/WEB-INF/jsp/error.jsp</result>
            <result name="input">/WEB-INF/jsp/error.jsp</result>
        </global-results>
        <!-- 全局异常映射 -->
        <global-exception-mappings>
            <exception-mapping result="sysError" exception="com.suixin.core.exception.SysException"></exception-mapping>
            <exception-mapping result="input" exception="java.lang.Exception"></exception-mapping>
        </global-exception-mappings>
    </package>  

    在子业务模块中的*-sturts.xml中继承总配置文件中的package:、
    <package name="user-action" namespace="/nsfw" extends="base-default">
    </package>

    //在具体的后台处理代码中抛出系统异常:
    public String listUI() throws ActionException{
        try {
            userList = userService.findObjects();
        } catch (ServiceException e) {
            //捕获Service异常,根据异常信息判断是否影响本次操作
            throw new ActionException("请求失败"+e.getMessage());
        }

        return "listUI";
    }

->如果在action中只抛出了ActionException,那么非此异常出现时,如果在全局异常映射中配置了java.lang.Exception 异常类的映射,同样可以捕获。

制定返回类型(StrutsResultSupport)

在有特殊情况时;如果没有异常信息,但是有错误并且有错误信息等内容;此时也需要进行友好的错误处理的话,
那么可以借助StrutsResultSupport 返回结果类型来实现特定处理。此种方式先需要继承StrutsResultSupport ,
然后可以在子类中获取本次请求的相关信息,再根据相关信息进行结果处理:

    public class SysResultAction extends StrutsResultSupport {

        @Override
        protected void doExecute(String arg0, ActionInvocation invocation) throws Exception {
            HttpServletRequest request = ServletActionContext.getRequest();
            HttpServletResponse response = ServletActionContext.getResponse();
            BaseAction action = (BaseAction)invocation.getAction();

            //do something
            System.out.println("进入了 SysResultAction ...");
        }

    }

在struts.xml总配置文件中定义全局处理类型和全局处理结果:

    <!-- 配置全局结果及异常映射 -->
    <package name="base-default" extends="struts-default">
        <!-- 返回结果类型 -->
        <result-types>
            <result-type name="error" class="cn.itcast.core.action.SysResultAction"></result-type>
        </result-types>
        <!-- 全局返回结果 -->
        <global-results>
            <result name="error" type="error">/WEB-INF/jsp/error.jsp</result>
            <result name="sysError">/WEB-INF/jsp/error.jsp</result>
            <result name="input">/WEB-INF/jsp/error.jsp</result>
        </global-results>
        <!-- 全局异常映射 -->
        <global-exception-mappings>
            <exception-mapping result="sysError" exception="cn.itcast.core.exception.SysException"></exception-mapping>
            <exception-mapping result="input" exception="java.lang.Exception"></exception-mapping>
        </global-exception-mappings>
    </package>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值