仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 554|回复: 9
打印 上一主题 下一主题

[学习教程] 了解下JAVA的一个用于J2EE使用程序的非常处置框架

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:23:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。
在年夜多半Java项目中,年夜部分代码都是榜样代码。非常处置就属于此类代码。即便营业逻辑只要3到4行代码,用于非常处置的代码也要占10到20行。本文将会商怎样让非常处置坚持复杂和直不雅,使开辟职员能够用心于开辟营业逻辑,而不是把工夫华侈在编写非常处置的榜样代码上。本文还将申明用于在J2EE情况中创立和处置非常的基本常识和引导准绳,并提出了一些可使用非常办理的营业成绩。本文将利用Struts框架作为暗示完成,但该办法合用于任何暗示完成。
利用checked和unchecked非常的场景
您是不是已经想过,为何要在编写好的代码块四周安排一个try-catch块,即使明晓得没法对这些非常举行甚么处置,而只满意于把它们放在catch块中?您大概想晓得,为何不克不及把这项事情放在一个会合的中央完成?在年夜多半情形下,这个中央关于J2EE使用程序来讲就是一个前端把持器。换句话说,开辟职员不会由于它们而遭到搅扰,由于基本不用良多地干涉它们。可是,假如一个办法称号包括一个throws子句,会呈现甚么情形呢?开辟职员大概必需捕获这些非常,大概把它们放在本人的办法的throws子句中。这就是疾苦的本源!侥幸的是,JavaAPI有一类叫做uncheckedexception的非常,它们不用捕获。可是,仍旧存在一个成绩:依据甚么来决意哪些是checked非常,哪些是unchecked非常?上面给出一些引导准绳:
终端用户没法接纳无效操纵的非常应当作为unchecked非常。比方,致命的和不成恢复的非常就应当是unchecked。把XMLParseException(在剖析XML文件时抛出)作为checked非常没有任何意义,由于唯一可以接纳的措施就是基于非常跟踪来办理基本成绩。经由过程扩大java.lang.RuntimeException,能够创立自界说的unchecked非常。
在使用程序中,与用户操纵相干的非常应当是checked非常。checked非常请求客户端来捕获它们。您大概会问,为何不把一切非常都看成是unchecked。如许做的成绩在于,个中一些非常没法在准确的地位被捕获到。这会带来更年夜的成绩,由于毛病只要在运转时才干被辨认。checked非常的例子有营业确认非常、平安性非常等等。
非常抛出战略
只捕获基础使用程序非常(假定为BaseAppException)并在throws子句中声明
在年夜多半J2EE使用程序中,关于针对某个非常应当在哪一界面上显现哪条毛病动静的决议只能在暗示层中做出。这会带来另外一个成绩:为何我们不克不及把这类决议放在一个大众的中央呢?在J2EE使用程序中,前端把持器就是一个举行罕见处置的会合地位。
别的,必需有一种用于传布非常的通用机制。非常也必要以一种普适的体例失掉处置。为此,我们一直必要在把持器端捕获基础使用程序非常BaseAppException。这意味着我们必要把BaseAppException非常(只要这个非常)放进能够抛出checked非常的每一个办法的throws子句中。这里的观点是利用多态来埋没非常的实践完成。我们在把持器中捕获BaseAppException,可是所抛出的特定非常实例多是几个派生非常类中的恣意一个。借助于这类办法,能够取得很多非常处置方面的天真性:
不必要在throws子句中放进大批的checked非常。throws子句中只必要有一个非常。
不必要再对使用程序非常利用凌乱的catch块。假如必要处置它们,一个catch块(用于BaseAppException)就充足了。
开辟职员不必要亲身举行非常处置(日记纪录和猎取毛病代码)。这类笼统是由ExceptionHandler完成的,稍后本文会就此点举行会商。
即便稍后把更多非常引进到办法完成中,办法称号也不会改动,因而也不必要修正客户端代码,不然就会引发连锁反响。但是,抛出的非常必要在办法的Javadoc中指定,以便让客户端能够看到办法束缚。
上面给出抛出checked非常的一个例子:
publicvoidupdateUser(UserDTOuserDTO)
throwsBaseAppException{
 UserDAOuserDAO=newUserDAO();
 UserDAO.updateUser(userDTO);
 ...
 if(...)
 thrownewRegionNotActiveException("Selectedregionisnotactive");
}
ControllerMethod:
...
try{
 Useruser=newUser();
 user.updateUser(userDTO);
}catch(BaseAppExceptionex){
 //ExceptionHandlerisusedtohandle
 //allexceptionsderivedfromBaseAppException
}
...
<p>
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-20 23:26:08 | 只看该作者
是一种为 Internet发展的计算机语言
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-28 21:42:40 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
活着的死人 该用户已被删除
地板
发表于 2015-1-31 07:11:20 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
透明 该用户已被删除
5#
发表于 2015-2-6 18:14:20 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
金色的骷髅 该用户已被删除
6#
发表于 2015-2-12 03:30:32 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
小妖女 该用户已被删除
7#
发表于 2015-2-18 09:22:09 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
admin 该用户已被删除
8#
发表于 2015-3-12 19:06:38 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
精灵巫婆 该用户已被删除
9#
发表于 2015-3-20 01:43:56 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
再现理想 该用户已被删除
10#
发表于 2015-4-10 12:03:45 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表