当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 概要 Java 提供了一个丰富的异常处理框架,但是许多程序员发现:跳过这个丰富的异常处理框架只使用类属Exceptions要容易得多。
 

 

    摘要: 编写 "纯html" jsp应用--学会使用 jstl 发布日期:2004-05-11 作者:juniper_c 刚开始用jsp做web应用的时候,象使用php,asp一样用jsp,在html代码中夹杂着一大堆的 scriptlet---即java 代码段。由于本人的“排版”技术还算可以,开始的时候觉得挺好,编......
 ·webservice实例-域名查询~    »显示摘要«
    摘要:查询表单: www.__________ [查询] 域名[www.stefli.com]居然还没有被注册!    接口说明文档: http://whois.aspsir.com/whois.asmx?wsdl   程序代码: <form name="form1" method="post" action="test.asp"&g......


捕捉和产生类属异常的处理方法

概要

在最近的一个项目中,有一块代码实现源代码的清除.因为它有许多不同的调用,很有可能会产生六个不同的异常.原来的程序员在试图简化代码(或者保存键入程序)之后宣告:该程序还不止产生6个不同的异常.这就使得代码调用必须包装在一个可以捕捉exception 的try/catch 块中.该程序员确定:因为该代码用于清除源代码,失败并不重要,所以catch 块为空,就好像系统关闭了一样. 【程序编程相关:写一个登陆用的用户控件。

java 提供了一个丰富的异常处理框架,但是许多程序员发现:跳过这个丰富的异常处理框架只使用类属exceptions要容易得多.本文探讨了产生.捕捉与忽视类属exceptions的风险,并为处理复杂软件项目内的一般的复杂异常建议了最好的处理方法. 【推荐阅读:《测试驱动开发》读书笔记之工具使用

【扩展信息:RCP(Rich Client Plat

很明显,这不是最好的编程解决方法,但是好像也看不出有什么大的错误,除了在源代码的第三行有一个小小的逻辑问题:

listing 1. original cleanup code private void cleanupconnections() throws exceptionone, exceptiontwo { for (int i = 0; i < connections.length; i++) { connection[i].release(); // throws exceptionone, exceptiontwo connection[i] = null; } connections = null; } protected abstract void cleanupfiles() throws exceptionthree, exceptionfour; protected abstract void removelisteners() throws exceptionfive, exceptionsix; public void cleanupeverything() throws exception { cleanupconnections(); cleanupfiles(); removelisteners(); } public void done() { try { dostuff(); cleanupeverything(); domorestuff(); } catch (exception e) {} }

在代码的另一个部分,connections 排列没有初始化,直到第一个连接创建为止.但是如果连接没有创见,那么连接排列则为null .所以在某些情况下,对connections[i].release()的调用将产生nullpointerexception.这也是一个相对容易的解决方法.只要添加一个对connections != null的检查.

但是,并没有报告异常.cleanupconnections()产生一个异常, cleanupeverything()又产生一个异常,最后异常被done()捕捉到.done()方法对一场不做任何处理,甚至也不记录一下.因为 只能通过done()调用cleanupeverything() ,所以看不到异常.因此代码也没有得到解决.

因此,在这个失败案例中,没有调用cleanupfiles()与removelisteners() 方法(所以它们的资源没有释放),也没有调用domorestuff(),这样done()中的最终处理没有完成.更糟糕的是,系统关闭时没有调用done();相反的,程序只调用done()来完成每个事务.所以每个事务中的资源都漏掉了.

这个问题无疑是一个主要的问题:错误没有报告,资源遗漏.
...   下一页
 ·了解tcp/ip协议    »显示摘要«
    摘要:哈哈!9月18号要参加国家计算机三级考试,报考的是网络技术,一个是同学们说这个简单,而且,现在和电脑接触的比较多,最好了解一些关于tcp/ip协议的东西,所以就报考了。今天看了一点书本,嘿嘿!找到了tcp/ip协议的一些东西!以前以为tcp/ip协议是一个这个大的协议了,其他的什么的协议是包涵在这里里面的,今天才知道是: tcp(transmission control protocol):传输......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE