??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩av毛片,日韩欧美在线影院,亚洲专区一区http://www.aygfsteel.com/joynice-fh/让我们一起JAVA......zh-cnTue, 17 Jun 2025 20:40:06 GMTTue, 17 Jun 2025 20:40:06 GMT60Java初学?/title><link>http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41170.html</link><dc:creator>风媄</dc:creator><author>风媄</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">风媄</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>转蝲的一文章,介绍了一个手机模拟界面的开?/title><link>http://www.aygfsteel.com/joynice-fh/archive/2006/04/14/41169.html</link><dc:creator>风媄</dc:creator><author>风媄</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 />前段旉把一个界面框架完成了Q今天基于这个框架开发一个小模块Q在q里把这个模块设计的全过E记录下来,希望大家讨论q指正?br /><br />一、v?br /><br />公司交给我一个Q务,为测试员写一个手机模拟界面,以方便她们的手机短信试。过d们都是用MC4J直接调用公司服务器的MBean服务来模拟进行测试,以验证我们整个系l^台。这U测试主要是查收发短信是否正常,而我的要做的工作是Q让她们在测试的时候更方便更直观?br /><br />二、需?br /><br />我和试员陈MMQ也是软g的用者)U定了一个时_(d)大家一h讨论q个软g的需求?br /><br />1、首先,我大概了解了一下她们的试工作Q知道我要做个什么东东?br /><br />2、然后我回去思考了一下,再次扑֥详细了解其测试的具体步骤Qƈ在一张白U怸以UML用例囄方式Q记录下需求的功能。用例是什么?用例是需求,是你的软g应该h的功能,当然用例囑֏是概括性的对功能进行了描述?br /><br />3、最后,我坐在我的电(sh)脑前开始用MagicDraw UML来画用例图(我不喜欢用RoseQ那玩意太笨重了Q界面友好性也不好Q。在ȝ例图的时候,我发C一些隐含的功能Q这些是陈MM在和我做需求时没有考虑到的Q注Q开发者应该ؓ(f)用户挖掘隐含需求)。我和陈MM一一定了这些我新发现的需求,最后得到如下的用例图?br /><br />Q?Q手机前台测试操作的用例图(说明Qinclude是指某用例包?include)子用例)<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 /> 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一定要先做到心中有个大概,否则q工的可能性就很大。而且Q把界面拿出来给客户看,客户也就能做到心中有敎ͼq能早提出一些新需求和意见来。千万不要等到Y件做完了再拿l客L(fng)Q到时客L(fng)了如果要修改Q那做太多白费工了?br /><br />׃软g界面相对单,陈݋Q基本没有提修改意见Q但q不是个好兆头。不q极限编E就是要拥抱变化不是^_^。咱不怕她改,只要大致的界面她能定下来p了?br /><br />界面我喜Ƣ用Visio来画Q当然也听说有h喜欢用)Q来快速构建界面原型的Q看个h喜好了。整个界面如下:(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反映了Y件的数据模型。在设计数据模型Q我参考了界面设计囑֒用例图,扑և一个个的类。然后参照用例图的一个个功能Q设计出了各cȝ属性和Ҏ(gu)。设计初始的cd当然不可能很详细Q但臛_应该看到个大概。有错误不要紧,后期可以慢慢修正Q但大体关系q定下来了?br /><br />NeilQ公司EQ_(d)Q一?0岁左右的真正的资q序员Q说Q看一个Y件的设计主要看两个类Q类囑֒时序图。类囄定了软g数据模型的静态关型,时序囑ֈ是数据模型的动态关pR?br /><br />cd如下Q看英文大致可以知道c/属性/Ҏ(gu)的含义和作用了,׃一一介绍了?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时序图表明了用例图中各功能的实现方案,同时也反应了cd中各cȝ交互关系。以后程序的逻辑和时序图基本一致。不q,有些Z(x)ȝ得很详细的时序图Q详l到都快赶上伪代码别了Q我觉得q没必要。我把时序图看做反映自己思\的大概过E,所以也q个大概?br /><br />我认为时序图要简z易懂,q样以后你的后l护者,拿到q个软g的时序图Q当然也包括用例图、类图)Q就能明白你的大概设计思\。另外,L序图也能整理自己的思\Q同时还可以对类囄设计q行验证。在画这个时序图的过E中Q我q正了在类图中的几处考虑不周的地斏V?br /><br />ȝQ时序图可以Q1Q整理思\Q2Q验证类的设计(Q)是很好的软g文档Q对l护者理解代码很有帮助?br /><br />q里仅给出其中几个时序图Q实际上我也没有把用例都dQ有些类似的单的Q就忽略了)<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就完成了,用时一天。下一步是~码Q将应用Q_(d)Q先写测试代码的方式来写代码Q下ơ再介绍了?br /><br /><br /><h5>作者简?/h5><p>陈刚Q广西桂林hQ著作有《Eclipse从入门到_N?br />(zhn)可以通过其博客了解更多信息和文章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">风媄</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风媄风媄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 异常处理

 

异常处理

?/span>      概念

?/span>      异常处理

?/span>      Ȁ发异?/span>

?/span>      创徏自己的异?/span>

?/span>      CZ

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

1 、概?/span>

采用新的异常处理机制

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

1 ?/span>   E序复杂

2 ?/span>   可靠性差

3 ?/span>   q回信息有限

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

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

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

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

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

4 ?/span>   方便定位错误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>

 

 

2 、异常处?/span>

Java 的异常是面向对象的。一?/span> Java ?/span> Exception 是一个描q异常情늚对象 . 当出现异常情冉|Q一?/span> Exception 对象׃生了 , 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(?{

   ?/span>

}

例如Q?/span>

try{

int a= 100/0

}catch(Exception e){;

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

}

 

每当 Java E序Ȁ发一个异常时Q它实际上是Ȁ发了一个对象,而只有其类?/span> Throwable cȝ对象才能被激发?/span> Throwable cM的提供了一些方法。如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{ 

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

ServerSocket ss = new ServerSocket(0);   

try {      Socket socket = ss.accept();    

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

catch (IOException e) {

      ss.close();                        //1     

throw e;    }

   ss.close();               //2  }}

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

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

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

class WithFinally{

public void foo2() throws IOException  {

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

ServerSocket ss = new ServerSocket(0);   

try {      Socket socket = ss.accept();     

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

finally {     

ss.close();   

}}}

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

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

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

try{

      /**to do */

}

catch(Exception ex){

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

}

finally{

      clearUpAll()

}

 

3 、激发异?/span>

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

 

格式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{

             …?/span>

}

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

             try{

}

             catch(Exception e){

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

}

}

4 、创q异常c?/span>

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

定义一个新的异常类

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

package whca.common;

public class WhcaException extends Exception{

    public WhcaException(){

    }

    public WhcaException(String s){

        super(s);

    }

}



风媄 2006-03-31 12:59 发表评论
]]>
վ֩ģ壺 ½| | ٳ| | ƽ| | γ| ɣֲ| | | ˼| | ɶ| ͨ| | | | | | ֬| | ¡| | ƽԶ| | | ó| | | | | ˮ| | | | | | ֺ| ɰ| | |