zoukankan      html  css  js  c++  java
  • 浅谈web开发中的异常

    浅谈web开发中的异常。

    序:
    异常,估计n多人都知道,至于那些定义、分类,我就不扯了。
    在web开发中,凡是过来的人都应该知道,在action层调用义务层处理后,成功执行还好,
    非成功执行就得通过某种方式通知action,然后action才知道将要显示何种提示信息给用户。
    说到这,那就进入今天的话题了。

    正文----开整

    在web开发中异常应该有两类,一类为java程序中定义的异常,即如果按照我们设想的不应该
    出现的异常,而另一类就是开发中很重要的业务异常。

    何为业务异常呢,先举个例子说明一下,例如在修改一个用户信息时,传递用户的年龄(age)不
    应该大于其父母亲的年龄,因此在service层中必然会做一个和父母亲年龄作比较的业务判断,
    一旦判断失败,在通常的处理中是返回一个标识,而我认为在业务中我们应该只关心正确流程,
    也就是说整个程序没有执行失败的返回路径,作为替代,我们定义一种异常,向上层抛出,以标
    识的失败,这种异常就是我们称为的业务异常。

    在action层,业务异常是应该要捕获的,并提示相应的信息给用户,这样用户才知道哪里出了错。
    而对于其他异常,一旦出现,普通的做法是,定义一个页面,提示:系统正忙,请稍后再试。。。

    如果是使用struts2进行开发的时候,对于业务异常,可以根据相应的异常标识,使用addActionError
    等,返回INPUT页面,提示用户相应的信息;对于其他异常,可以使用在struts的包中定义一个
    GlobalException来捕获,然后在result中返回公共的异常处理页面,如上面提到的系统正忙页面。

    下面是一个简单的ServiceException异常类。

    public class ServieException
    {
    //异常码,标识异常,也可以是国际化资源文件中的key值
    private long exceptionCode;

    //异常参数,也可以是国际化资源文件中对应key标识的资源所需的参数
    private String[] parameters;

    //构造器
    public ServiceException(long exceptionCode, String... parameters)
    {
    this.exceptionCode = exceptionCode;

    this.parameters = parameters;
    }

    public long getExceptionCode()
    {
    return exceptionCode;
    }

    public void setExceptionCode(long exceptionCode)
    {
    this.exceptionCode = exceptionCode;
    }

    public String[] getParameters()
    {
    return parameters;
    }

    public void setParameters(String[] parameters)
    {
    this.parameters = parameters;
    }
    }
    如果exceptionCode对应的是国际化资源文件中的key值,那么在action调用service层方法
    时,一旦出现异常(ServiceException e),便可以使用如下语句
        addActionError(getExceptionCode, getParameters());
    return INPUT;
    这样就可以把相关业务异常所代表的信息提示给用户。
    注意,并不是每个action都可以定义INPUT页面的,所以在实际应用中,还应该提供一个公共
    的失败页面,以供那些不能返回INPUT的页面,提示错误信息。当然,最好也提供一个公共成
    功的页面,好事成双嘛。哈哈。。。

    简单理解,请批评指教。
    OK,打完收工
  • 相关阅读:
    JavaScript--截取字符串
    C#--Dictionary字典学习
    根据条件把A表数据更新到B表中一个字段中(查询更新)
    zip多文件的压缩下载和解压
    C# 创建一个新的DataTable,并根据查询的DataTable结果进行重新赋值
    C# string.formate() 中 如何使用string 循环出来的一串字符
    asp.net mvc 之jqgird 列表数据 根据字典显示中文
    asp.net mvc 之显示24小时折线对比数据
    hightchart扇形图asp.net mvc 实现
    hightchart单个柱状图实现之asp.net mvc
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400766.html
Copyright © 2011-2022 走看看