从一开始走上工作岗位到现在快一年了,可我对如何处理异常还是似懂非懂。模仿编码——bug——调试——bug——调试。。。
j2ee项目中 自己的异常处理总觉得很别扭 所以把这篇文章载过来 作者不详 嘿
为什么要在J2EE项目中谈异常处理呢?
可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”。笔者在初学java时也是这样认为的。如何在一个多层的j2ee项目中定义相应的异常类?在项目中的每一层如何进行异常处理?异常何时被抛出?异常何时被记录?异常该怎么记录?何时需要把checked Exception转化成unchecked Exception ,何时需要把unChecked Exception转化成checked Exception?异常是否应该呈现到前端页面?如何设计一个异常框架?
本文将就这些问题进行探讨。
1. JAVA异常处理
在面向过程式的编程语言中,我们可以通过返回值来确定方法是否正常执行。比如在一个c语言编写的程序中,如果方法正确的执行则返回1.错误则返回0。在vb或delphi开发的应用程序中,出现错误时,我们就弹出一个消息框给用户。
通过方法的返回值我们并不能获得错误的详细信息。可能因为方法由不同的程序员编写,当同一类错误在不同的方法出现时,返回的结果和错误信息并不一致。
所以java语言采取了一个统一的异常处理机制。
什么是异常?运行时发生的可被捕获和处理的错误。
在java语言中,Exception是所有异常的父类。任何异常都扩展于Exception类。Exception就相当于一个错误类型。如果要定义一个新的错误类型就扩展一个新的Exception子类。采用异常的好处还在于可以精确的定位到导致程序出错的源代码位置,并获得详细的错误信息。
Java异常处理通过五个关键字来实现,try,catch,throw ,throws, finally。具体的异常处理结构由try….catch….finally块来实现。try块存放可能出现异常的java语句,catch用来捕获发生的异常,并对异常进行处理。Finally块用来清除程序中未释放的资源。不管理try块的代码如何返回,finally块都总是被执行。
一个典型的异常处理代码
java 代码
public String getPassword(String userId)throws DataAccessException{
String sql = “select password from userinfo where userid=’”+userId +”’”;
String password = null;
Connection con = null;
Statement s = null;
ResultSet rs = null;
try{
con = getConnection();//获得数据连接
s = con.createStatement();
rs = s.executeQuery(sql);
while(rs.next()){
password = rs.getString(1);
}
rs.close();
s.close();
}
Catch(SqlException ex){
throw new DataAccessException(ex);
}
finally{
try{
if(con != null){
con.close();
}
}
Catch(SQLException sqlEx){
throw new DataAccessException(“关闭连接失败!”,sqlEx);
}
}
return password;
}
可以看出Java的异常处理机制具有的优势:
给错误进行了统一的分类,通过扩展Exception类或其子类来实现。从而避免了相同的错误可能在不同的方法中具有不同的错误信息。在不同的方法中出现相同的错误时,只需要throw 相同的异常对象即可。
获得更为详细的错误信息。通过异常类,可以给出更为详细,对用户更为有用的错误信息。以便于用户进行跟踪和调试程序。
把正确的返回结果与错误信息分离。降低了程序的复杂度。调用者无需要对返回结果进行更多的了解。
强制调用者进行异常处理,提高程序的质量。当一个方法声明需要抛出一个异常时,那么调用者必须使用try….catch块对异常进行处理。当然调用者也可以让异常继续往上一层抛出。
分享到:
相关推荐
J2EE项目中统一异常处理,14类异常的自定义分析,支持dao层异常原因的返回
从J2EE应用系统架构的层次性着手,建立异常层次结构处理框架,基于分层分类策略提出一种J2EE应用系统的异常处理方法。结合大量实例,对异常层次处理框架的有效性、可扩展性进行验证。实验结果表明,异常层次处理框架...
J2EE项目异常处理的几种方案 内有代码
Struts开发指南之J2EE n层结构.doc
J2EE体系结构图或三层结构图
经典J2EE J2EE项目 项目案例 J2EE初学者参考
典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与...
J2EE项目开发总结J2EE项目开发总结
本书汇集了大量企业级应用项目开发的经验,归纳了不同项目中使用的框架、模式、设计方法、开发方法,形成一个完整的技术体系和指导方法,以供用J2EE进行项目开发的初级人员和有一定经验的高级开发人员阅读。...
J2EE项目开发模板 J2EE项目开发模板 J2EE项目开发模板 J2EE项目开发模板 J2EE项目开发模板 J2EE项目开发模板
包含j2ee项目中用到的所有包,可以避免了到处查找的时间,省去部分不必要的麻烦
J2EE项目开发与设计随书源码免费分享,喜欢的朋友欢迎自行下载
j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发...
一个四层架构的J2EE项目实例.rar一个四层架构的J2EE项目实例.rar
使用MyEclipse平台开发J2EE项目
规则引擎Drools在J2EE项目开发中的应用...
J2EE java 项目 有完整的架构 作为学习的参考
此项目为J2EE BS/CS项目 需要 :tomcat6.0f服务器 数据库 struts1/struts2动态库架包 myeclipse7.0集成开发工 链接串口连接数据库驱动 串口发短架包 GPRS模块等 运用了MVC三层架构开发模式 struts1/strts2结合...
J2EE中文乱码问题终极解决之道 如果看了这个文件之后你还解决不了乱码问题 那就不是我的问题了
软件测试技术在J2EE项目中的应用(忘记谁给我得了)