当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

J2EE系统非常的处理原则[Java编程]

赞助商链接



  本文“J2EE系统非常的处理原则[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

非常的处理是每个Java程序员经常面对的问题,但是很多人没有原则,碰到非常也不知道若何去处理,于是碰到查抄非常就胡乱 try...catch...一把,然后e.printStackTrace()一下了事,这种做法普通除了调试排错有点作用外,没任何代价.关于运行时非常,则干脆置之不睬.

缘由是很多开辟者贫乏对非常的熟习和解析,首先应当懂得Java非常体系构造,一种分层担当的关系,你必须对层次构造熟烂于心:

Throwable(必须查抄)
                     Error(非必须查抄)
                     Exception(必须查抄)
                                     RuntimeException(非必须查抄)

普通把Exception非常及其直接子类(除了RuntimeException之外)的非常称之为查抄非常.把RuntimeException以及其子类的非常称之为非查抄非常,也叫运行时非常.

关于Throwable和Error,则用的很少,普通会用在一些底子框架中,这里不做谈论.

下面针对J2EE的分层架构:DAO层、业务层、掌握层、展示层的非常处理做个解析,并给出普通处理原则.

1、DAO层非常处理

假如你用了Spring的DAO模板来实现,则DAO层没有查抄非常抛出,代码非常的文雅.但是,假如你的DAO采取了原始的JDBC来写,这时刻,你不能不对非常做处理了,因为难以避免的SQLException会如影随形的随着你.对已这种DAO级别的非常,非常了你又能若何呢?与其这样胡乱try...catch...,囫囵吞枣清除了非常不如让非常以别的一种非查抄的方法向外传送.这样做好处有二:

1)、DAO的接口不被非常所污染,假定你抛出了SQLException,今后如果换了Spring DAO模板,那DAO接口就不再抛出了SQLException,这样,你的接口抛出非常就是对接口的污染.

2)、DAO非常向外传达给更高层处理,以便非常的错误缘由不丧失,便于排查错误或举行捕捉处理.

这里还有一个计划上常常令人困扰的问题:很多人会问,那定义一个什么样的非常抛出呢,大概是直接抛出一个throw RuntimeException(e)? 关于这个问题,需求分场所,假如系统小,你可以直接抛出一个throw RuntimeException(e),但关于一个宏大的多模块系统来说,不要抛这种原生的非查抄非常,而要抛出自定义的非查抄非常,这样不但利于排错,并且有利于系统非常的处理,普通针对每一个模块,粗粒度的定义一个运行时DAO非常.比方:throw new ModelXxxDAORuntimeException(".....",e),关于msg信息,你可写也可不写,按照需求机动抛出.

这里常见一个很愚笨的处理方法,为每个DAO定义一个非常,呵呵,这样累不累啊,有多粗心义,在Service层中调用时刻,假如要捕捉,还要捕捉出一堆非常.这样致命的问题是代码混乱,保护艰难,阅读也艰难,DAO的非常应当是粗粒度的.

2、业务层非常处理

习惯上把业务层称之为Service层大概服务层,Service层的代表的是业务逻辑,不要迷信分太多太多层有多大好处,除非需求,不然别盲目划分不必要的层,层越多,效率越差,按照需求够用就行了.

Service接口中的每个办法代表一个特定的业务,而这个业务一定是一个完好的业务,普通会看到一些傻X的做法,数据库事件配置在 Service层,而Service的实现就是DAO的直接调用,然后在掌握层(Action)中,调用了好多Service去完成一个业务,你气得已经无语了,垂头找砖头去!!!

搞懂得以上两个问题后再回过头看非常怎么处理,Service层普通依靠DAO,而Service层的普通也会因为调用别的非查抄非常办法而必须面对非常处理的问题,这里和DAO层又有所差别,彼一时,此一时嘛!

普通来说一个小模块对应一个Service,当然大概有两个或多个,针对这个模块的Service定义一个非查抄非常,以对付那些不可避免的非常查抄,这个自定义非常可以简单的命名为XxxServiceRuntimeException,将捕捉到的非常顺势转译为非查抄非常后抛出.我喜好这么做,因为前台是J2EE利用,前台是web页面,它们的Struts2等框架会自动捕捉全部Service层的非常,并把非常交给开辟者去安闲处理.

但是还有一种情形,由于一些特别的限制,假如某个非常一旦发生,必须做什么什么处理,而这种处理时硬性要求,大概调用某个Service办法,必须查抄处理什么非常,也可以抛出非查抄的自定义非常,常常呈现这种情形的是政治缘由.不推崇这种做法,但也不排挤.

总之,关于接口,尽大概不去用非常污染她!


  以上是“J2EE系统非常的处理原则[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 若何开辟出高质量J2EE系统
  • J2EE中集成赛门铁克防病毒扫描引擎
  • 基于J2EE的电子商务开辟模子及其实现
  • <b>安置基于JBoss的J2EE操纵程序</b>
  • J2EE操纵下基于AOP的抓取战略实现
  • <b>集成技术:.NET单挑J2EE</b>
  • 开辟J2EE企业级操纵程序办法
  • 软件体系架构情势在J2EE中的操纵
  • J2EE底子 用Struts框架开辟MVC系统步骤
  • <b>J2EE底子:Struts框架初学者从这里入门</b>
  • Cell插件在J2EE系统中的操纵
  • J2EE新手入门图解
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .