|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。
非常的处置是每一个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,今后如果换了SpringDAO模板,那DAO接口就不再抛出了SQLException,如许,你的接口抛出非常就是对接口的净化。
2)、DAO非常向别传播给更高层处置,以便非常的毛病缘故原由不丧失,便于排查毛病或举行捕捉处置。
这里另有一个计划上经常使人困扰的成绩:良多人会问,那界说一个甚么样的非常抛出呢,大概是间接抛出一个throwRuntimeException(e)?关于这个成绩,必要分场所,假如体系小,你能够间接抛出一个throwRuntimeException(e),但关于一个复杂的多模块体系来讲,不要抛这类原生的非反省非常,而要抛出自界说的非反省非常,如许不仅利于排错,并且有益于体系非常的处置,一般针对每个模块,粗粒度的界说一个运转时DAO非常。好比:thrownewModelXxxDAORuntimeException(".....",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办法,必需反省处置甚么非常,也能够抛出非反省的自界说非常,常常呈现这类情形的是政治缘故原由。不推许这类做法,但也不排挤。
总之,关于接口,尽量不往用非常净化她!
<p>
前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。 |
|