??xml version="1.0" encoding="utf-8" standalone="yes"?>精品国产乱码久久久久酒店,黄网站app在线观看下载视频大全官网,在线中文字幕-区二区三区四区http://www.aygfsteel.com/joynice-fh/让我们一起JAVA......zh-cnTue, 17 Jun 2025 20:59:56 GMTTue, 17 Jun 2025 20:59:56 GMT60Java初学?/title><link>http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41170.html</link><dc:creator>风媄(jing)</dc:creator><author>风媄(jing)</author><pubDate>Fri, 14 Apr 2006 13:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41170.html</guid><wfw:comment>http://www.aygfsteel.com/joynice-fh/comments/41170.html</wfw:comment><comments>http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/joynice-fh/comments/commentRss/41170.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/joynice-fh/services/trackbacks/41170.html</trackback:ping><description><![CDATA[     摘要: Java 初学者( 1 Q? ...  <a href='http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41170.html'>阅读全文</a><img src ="http://www.aygfsteel.com/joynice-fh/aggbug/41170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/joynice-fh/" target="_blank">风媄(jing)</a> 2006-04-14 21:43 <a href="http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转蝲的一文章,介绍?jin)一个手机模拟界面的开?/title><link>http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41169.html</link><dc:creator>风媄(jing)</dc:creator><author>风媄(jing)</author><pubDate>Fri, 14 Apr 2006 13:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41169.html</guid><wfw:comment>http://www.aygfsteel.com/joynice-fh/comments/41169.html</wfw:comment><comments>http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41169.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/joynice-fh/comments/commentRss/41169.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/joynice-fh/services/trackbacks/41169.html</trackback:ping><description><![CDATA[ <h3> <a href="/chengang/archive/2006/04/12/40684.html">[TDD开发的全过E] 一、设计阶D?/a> </h3> <h4> <div align="left">            ?陈刚 at 2006q??2日 from <a >www.ChenGang.com.cn</a><br /><br /><br />前段旉把一个界面框架完成了(jin)Q今天基于这个框架开发一个小模块Q在q里把这个模块设计的全过E记录下来,希望大家讨论q指正?br /><br />一、v?br /><br />公司交给我一个Q务,为测试员写一个手机模拟界面,以方便她们的手机短信试。过d们都是用MC4J直接调用公司服务器的MBean服务来模拟进行测试,以验证我们整个系l^台。这U测试主要是(g)查收发短信是否正常,而我的要做的工作是Q让她们在测试的时候更方便更直观?br /><br />二、需?br /><br />我和试员陈MMQ也是软g的用者)(j)U定?jin)一个时_(d)大家一h讨论q个软g的需求?br /><br />1、首先,我大概了(jin)解了(jin)一下她们的试工作Q知道我要做个什么东东?br /><br />2、然后我回去思考了(jin)一下,再次扑֥详细?jin)解其测试的具体步骤Qƈ在一张白U怸以UML用例囄方式Q记录下需求的功能。用例是什么?用例是需求,是你的软g应该h的功能,当然用例囑֏是概括性的对功能进行了(jin)描述?br /><br />3、最后,我坐在我的电(sh)脑前开始用MagicDraw UML来画用例图(我不喜欢用RoseQ那玩意太笨重了(jin)Q界面友好性也不好Q。在ȝ例图的时候,我发C(jin)一些隐含的功能Q这些是陈MM在和我做需求时没有考虑到的Q注Q开发者应该ؓ(f)用户挖掘隐含需求)(j)。我和陈MM一一定?jin)这些我新发现的需求,最后得到如下的用例图?br /><br />Q?Q手机前台测试操作的用例图(说明Qinclude是指某用例包?include)子用例)(j)<br /><br /><img style="WIDTH: 623px; HEIGHT: 330px" height="410" alt="[用例]手机.jpg" src="http://www.aygfsteel.com/images/blogjava_net/chengang/others/[用例]手机.jpg" width="1429" border="0" /><br /> (tng)Q?Q后台管?br /><img height="258" alt="[用例]后台理.jpg" src="http://www.aygfsteel.com/images/blogjava_net/chengang/others/[用例]后台理.jpg" width="392" border="0" /><br /><br /><br />三、界面设?br /><br />接下来是界面设计。既然是手机模拟Q我很自然就拿我的motorola手机的操作界面来做参考。不q这里应该注意到Q手机操作环境和?sh)脑操作环境不尽相同Q比如说?sh)脑有鼠标,q有键盘可以输入文字Q,所以没有必要唯妙唯肖的完全模枋Q还是以使用者操作方便ؓ(f)丅R?br /><br />界面设计是很重要的一步,不要一上来写E序Q一定要先做到心(j)中有个大概,否则q工的可能性就很大。而且Q把界面拿出来给客户看,客户也就能做到心(j)中有敎ͼq能早提出一些新需求和意见来。千万不要等到Y件做完了(jin)再拿l客L(fng)Q到时客L(fng)?jin)如果要修改Q那做太多白费工了(jin)?br /><br />׃软g界面相对单,陈݋Q基本没有提修改意见Q但q不是个好兆头。不q极限编E就是要拥抱变化不是^_^。咱不怕她改,只要大致的界面她能定下来p?jin)?br /><br />界面我喜Ƣ用Visio来画Q当然也听说有h喜欢用)(j)Q来快速构建界面原型的Q看个h喜好?jin)。整个界面如下:(x)<br /><img height="611" alt="[界面设计]手机.jpg" src="http://www.aygfsteel.com/images/blogjava_net/chengang/others/[界面设计]手机.jpg" width="556" border="0" /><br /><br /><br /><br />q个是后台管理界?br /><img height="480" alt="[界面设计]L(fng)理.jpg" src="http://www.aygfsteel.com/images/blogjava_net/chengang/others/[界面设计]L(fng)理.jpg" width="478" border="0" /><br /><br /><br /><br />四、类?br /><br />cd反映?jin)Y件的数据模型。在设计数据模型Q我参考了(jin)界面设计囑֒用例图,扑և一个个的类。然后参照用例图的一个个功能Q设计出?jin)各cȝ属性和Ҏ(gu)。设计初始的cd当然不可能很详细Q但臛_应该看到个大概。有错误不要紧,后期可以慢慢修正Q但大体关系q定下来了(jin)?br /><br />NeilQ公司EQ_(d)Q一?0岁左右的真正的资q序员Q说Q看一个Y件的设计主要看两个类Q类囑֒时序图。类囄定了(jin)软g数据模型的静(rn)态关型,时序囑ֈ是数据模型的动态关pR?br /><br />cd如下Q看英文大致可以知道c/属性/Ҏ(gu)的含义和作用?jin),׃一一介绍?jin)?br /><br /><br /><img height="562" alt="[cd].jpg" src="http://www.aygfsteel.com/images/blogjava_net/chengang/others/[cd].jpg" width="625" border="0" /><br /><br /><br /><br />五、时序图<br /><br />时序图是本文最后一个图Q时序图表明?jin)用例图中各功能的实现方案,同时也反应?jin)cd中各cȝ交互关系。以后程序的逻辑和时序图基本一致。不q,有些Z(x)ȝ得很详细的时序图Q详l到都快赶上伪代码别了(jin)Q我觉得q没必要。我把时序图看做反映自己思\的大概过E,所以也q个大概?br /><br />我认为时序图要简z易懂,q样以后你的后l护者,拿到q个软g的时序图Q当然也包括用例图、类图)(j)Q就能明白你的大概设计思\。另外,L序图也能整理自己的思\Q同时还可以对类囄设计q行验证。在画这个时序图的过E中Q我q正了(jin)在类图中的几处考虑不周的地斏V?br /><br />ȝQ时序图可以Q1Q整理思\Q2Q验证类的设计(Q)(j)是很好的软g文档Q对l护者理解代码很有帮助?br /><br />q里仅给出其中几个时序图Q实际上我也没有把用例都dQ有些类似的单的Q就忽略?jin)?j)<br /><br />Q1Q新增一个手机号?br /><img height="327" alt="[时序图]add phone number.jpg" src="http://www.aygfsteel.com/images/blogjava_net/chengang/others/[时序图]add%20phone%20number.jpg" width="583" border="0" /><br /><br />Q2Q关?br /><img height="255" alt="[时序图]power off.jpg" src="http://www.aygfsteel.com/images/blogjava_net/chengang/others/[时序图]power%20off.jpg" width="293" border="0" /><br />Q3Q开?br /><img height="337" alt="[时序图]power on.jpg" src="http://www.aygfsteel.com/images/blogjava_net/chengang/others/[时序图]power%20on.jpg" width="407" border="0" /><br />Q4Q发送短?br /><img height="381" alt="[时序图]send message.jpg" src="http://www.aygfsteel.com/images/blogjava_net/chengang/others/[时序图]send%20message.jpg" width="405" border="0" /><br /><br /><br /><br />到这里设计阶D就完成?jin),用时一天。下一步是~码Q将应用Q_(d)Q先写测试代码的方式来写代码Q下ơ再介绍?jin)?br /><br /><br /><h5>作者简?/h5><p>陈刚Q广西桂林hQ著作有《Eclipse从入门到_N?br />(zhn)可以通过其博客了(jin)解更多信息和文章Q?a target="_blank" onfocus="this.blur()">http://www.ChenGang.com.cn</a><br />版权声明Q本博客所有文章仅适用于非商业性{载,q请在{载时注明出处?qing)作者的|名?/p></div> </h4> <img src ="http://www.aygfsteel.com/joynice-fh/aggbug/41169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/joynice-fh/" target="_blank">风媄(jing)</a> 2006-04-14 21:36 <a href="http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java异常处理http://www.aygfsteel.com/joynice-fh/archive/2006/03/31/38452.html风媄(jing)风媄(jing)Fri, 31 Mar 2006 04:59:00 GMThttp://www.aygfsteel.com/joynice-fh/archive/2006/03/31/38452.htmlhttp://www.aygfsteel.com/joynice-fh/comments/38452.htmlhttp://www.aygfsteel.com/joynice-fh/archive/2006/03/31/38452.html#Feedback0http://www.aygfsteel.com/joynice-fh/comments/commentRss/38452.htmlhttp://www.aygfsteel.com/joynice-fh/services/trackbacks/38452.html Java 异常处理

 (tng)

异常处理

?/span>  (tng) (tng) (tng) (tng) 概念

?/span>  (tng) (tng) (tng) (tng) 异常处理

?/span>  (tng) (tng) (tng) (tng) Ȁ发异?/span>

?/span>  (tng) (tng) (tng) (tng) 创徏自己的异?/span>

?/span>  (tng) (tng) (tng) (tng) CZ

Java 语言的设计从Ҏ(gu)上便于我们写出整z、设计良好的代码Q尽如此,在程序运行中仍可能有各种各样的错误出现?/span>

1 、概?/span>

采用新的异常处理机制

 (tng) (tng) (tng) (tng) (tng) 在以往的程序开发过E中Q常帔R用返回D行处理。例如,在编写一个方法,可以q回一个状态代码,调用者根据状态代码判断出错与否。若状态代码表CZ个错误,则调用这q行相应的处理,或显CZ个错误页面或错误信息。通过q回D行处理的Ҏ(gu)是有效的Q但是有它的许多不之处?/span>

1 ?/span>  (tng) E序复杂

2 ?/span>  (tng) 可靠性差

3 ?/span>  (tng) q回信息有限

4 ?/span>  (tng) q回代码标准化困?/span>

采用错误代码和异常处理相l合的方式的优越性:(x)

1 ?/span>  (tng) 把错误代码与常规代码分开

2 ?/span>  (tng) 可以?/span> catch 中传播错误信?/span>

3 ?/span>  (tng) 可以寚w误类型分l?/span>

4 ?/span>  (tng) 方便定位错误Q维?/span>

异常

异常是异常事gQ它是程序遇到异常情冉|Ȁ发的事g。许多异常,如程序错误,I指针,数组溢出{。下面是一个出错流E?/span>

上图中:(x)

W一步:(x)插入用户?/span> Keynet Q登录系l?/span>

W二步:(x)服务器验证用L(fng)w䆾Q判断用L(fng)权限

W三步:(x)q回错误的信息?/span>

q是一个简单的异常处理CZQ怎样单、方ѝ快L(fng)得到错误信息。可以采用错误代码和异常两种方式相结合的方式处理?/span>

 (tng)

 (tng)

2 、异常处?/span>

Java 的异常是面向对象的。一?/span> Java ?/span> Exception 是一个描q异常情늚对象 . 当出现异常情冉|Q一?/span> Exception 对象׃生了(jin) , q放到异常的成员函数里?/span>

Java 的异常处理是通过 5 个关键词来实现的Q?/span> try,catch,throw,throws ?/span> finally 。在 Java 语言的错误处理结构由 try Q?/span> catch Q?/span> finally 三个块组成。其?/span> try 块存攑ְ可能发生异常?/span> Java 语言Qƈ理相关的异常指针; catch 块紧跟在 try 块后面,用来Ȁ发被捕获的异常; finally 块包含清除程序没有释攄资源Q句柄等。不?/span> try 块中的代码如何退出,都将执行 finally 块?/span>

try ?/span> catch ?/span> ?/span>

可以采用 try 来指定一块预防所有异常的E序。紧跟在 try E序块后面,应包含一?/span>

或多?/span> catch 子句来指定你惌捕获的异常类型:(x) try catch 的格式一般ؓ(f)Q?/span>

try{

/**do something*/

}catch(?{

?/span>

}catch(?{

 (tng) (tng) ?/span>

}

例如Q?/span>

try{

int a= 100/0

}catch(Exception e){;

System.out.println(e.getMessage());

}

 (tng)

每当 Java E序Ȁ发一个异常时Q它实际上是Ȁ发了(jin)一个对象,而只有其类?/span> Throwable cȝ对象才能被激发?/span> Throwable cM的提供了(jin)一些方法。如Q其中的 getMessage() Ҏ(gu)打印出异常对应信息?/span>

Catch 子句的目标是解决异常情况Q把变量讑ֈ合理的状态,q象没有出错一L(fng)l运行。如果一个子E序不处理没个异常,则返回到上一U处理,如此可以不断的递归向上直到最外一U?/span>

finally ?/span>

finally 关键字是?/span> Java 异常处理模型的最佌充?/span> finally l构使代码M(x)执行Q而不有无异常发生。?/span> finally 可以l护对象的内部状态,q可以清理非内存资源。如果没?/span> finally Q?zhn)的代码就会(x)很费解。例如,下面的代码说明,在不使用 finally 的情况下(zhn)必d何编写代码来释放非内存资源:(x)

import java.net.*;import java.io.*;

class WithoutFinally{ (tng)

public void foo() throws IOException (tng) { (tng) (tng) (tng) // 在Q一个空闲的端口上创Z个套接字  (tng) (tng) (tng)

ServerSocket ss = new ServerSocket(0); (tng) (tng) (tng)

try { (tng) (tng) (tng) (tng) (tng) Socket socket = ss.accept(); (tng) (tng) (tng) (tng)

 (tng)// 此处的其他代?/span> ... (tng) (tng) (tng) } (tng) (tng) (tng)

catch (IOException e) {

 (tng) (tng) (tng) (tng) (tng) ss.close(); (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) //1 (tng) (tng) (tng) (tng) (tng)

throw e; (tng) (tng) (tng) }

 (tng) (tng) ss.close(); (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) //2 (tng) }}

q段代码创徏?jin)一个套接字Qƈ调用 accept Ҏ(gu)。在退?gu)?gu)之前Q?zhn)必须关闭此套接字Q以避免资源漏洞。ؓ(f)?jin)完成这一dQ我们在 //2 处调?/span> close Q它是该Ҏ(gu)的最后一条语句。但是,如果 try 块中发生一个异怼(x)怎么样呢Q在q种情况下, //2 处的 close 调用永远不会(x)发生。因此,(zhn)必L莯个异常,q在重新发出q个异常之前?/span> //1 处插入对 close 的另一个调用。这样就可以保在退?gu)?gu)之前关闭套接字?/span>

q样~写代码既麻?ch)又易于出错Q但在没?/span> finally 的情况下q是必不可少的。不q的是,在没?/span> finally 机制的语a中,E序员就可能忘记以这U方式组l他们的代码Q从而导致资源漏z?/span> Java 中的 finally 子句解决?jin)这个问题。有?/span> finally Q前面的代码可以重写ؓ(f)以下的Ş式:(x)

import java.net.*;import java.io.*;

class WithFinally{

public void foo2() throws IOException (tng) {

// 在Q一个空闲的端口上创Z个套接字  (tng) (tng) (tng)

ServerSocket ss = new ServerSocket(0); (tng) (tng) (tng)

try { (tng) (tng) (tng) (tng) (tng) Socket socket = ss.accept(); (tng) (tng) (tng) (tng) (tng)

// 此处的其他代?/span> ... (tng) (tng) (tng) } (tng) (tng)

finally { (tng) (tng) (tng) (tng) (tng)

ss.close(); (tng) (tng) (tng)

}}}

finally 块确?/span> close Ҏ(gu)总被执行Q而不?/span> try 块内是否发出异常。因此,可以保在退?gu)?gu)之前M(x)调用 close Ҏ(gu)。这h可以确信套接字被关闭ƈ且?zhn)没有泄漏资源。在此方法中不需要再有一?/span> catch 块。在W一个示例中提供 catch 块只是ؓ(f)?jin)关闭套接字Q现在这是通过 finally 关闭的。如果?zhn)实提供了(jin)一?/span> catch 块,?/span> finally 块中的代码在 catch 块完成以后执行?/span>

finally 块必M try ?/span> try/catch 块配合用。此外,不可能退?/span> try 块而不执行?/span> finally 块。如?/span> finally 块存在,则它M(x)执行。(无论从那点看Q这个陈q都是正的。有一U方法可以退?/span> try 块而不执行 finally 块。如果代码在 try 内部执行一?/span> System.exit(0); 语句Q则应用E序l止而不?x)执?/span> finally 执行。另一斚wQ如果?zhn)?/span> try 块执行期间拨掉电(sh)源, finally 也不?x)执行。)(j)

try ?/span> catch ?/span> finally ?/span>

最好采用此l构处理异常 . ?/span> catch 中捕获异?/span> , ?/span> finally 块中清除不需要的资源 , q样E序l构会(x)更完?/span> , 健壮 . 例如 :

try{

 (tng) (tng) (tng) (tng) (tng) /**to do */

}

catch(Exception ex){

 (tng) (tng) (tng) (tng) (tng) System.out.println(ex.getMessage());

}

finally{

 (tng) (tng) (tng) (tng) (tng) clearUpAll()

}

 (tng)

3 、激发异?/span>

Java 语言可以不在Ҏ(gu)中直接捕P而用 throw 语句异常抛l上层的调用者?/span> Throw 语句是来明地抛出一个异常;首先你必需得到一?/span> Throwable 的实例句柄,通过参数传到 catch 中,或者采?/span> new 操作W来创徏一个?/span>

 (tng)

格式Q?/span> throw new WhcaException(e.getMessage);

E序?x)?/span> throw 语句后立即终止,它后面的语句都不执行Q然后在包含它的所?/span> try 块中从里到外L含有与其匚w?/span> catch.

声明异常c?/span>

?/span> throw 语句被用在方法说明中Ӟ throw 有用 throws 代替。关键字 throws 用来标明一个方法可能抛出的各种异常。对大多?/span> Exception 子类来说Q?/span> Java ~译器会(x)你声明在一个方法中抛出的异常的cd。如下:(x)

格式Q?/span> type method_name(arg_list) throws WhcaException{

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) …?/span>

}

例如Q?/span> public void execute(String str,int index) throws WhcaException{

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) try{

}

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) catch(Exception e){

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) throw new WhcaException(“JB: M:?e.getMessage)

}

}

4 、创q异常c?/span>

当程序员?sh)提供一些特定的功能?/span> Java cLQ往往需要保证类之间有良好的关系Q而且cM间的接口易于理解和实玎ͼq是定义一个新的异常类。徏议创q异常c,便于l护Q管理?/span>

定义一个新的异常类

 (tng) (tng) (tng) (tng) (tng) 通常采用 Exception 作ؓ(f)异常cȝ类Q如Q?/span>

package whca.common;

public class WhcaException extends Exception{

 (tng) (tng) (tng) public WhcaException(){

 (tng) (tng) (tng) }

 (tng) (tng) (tng) public WhcaException(String s){

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) super(s);

 (tng) (tng) (tng) }

}



风媄(jing) 2006-03-31 12:59 发表评论
]]>
վ֩ģ壺 ֳ| | | ɳ| ˮ| ̨ǰ| ÷| ӱ| | | | | ƽ| | μԴ| ٹ| ɽ| | Ͻ| | ˫| ī| | ɽ| ̩| | ޶| ƺ| ̨| | ɽ| | ޽| ɽ| | | | | | | |