﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java改变应用 应用影响你我-文章分类-J2SE</title><link>http://www.blogjava.net/jnbzwm/category/46197.html</link><description>         在学习中成长 在总结中进步</description><language>zh-cn</language><lastBuildDate>Wed, 01 Sep 2010 22:32:47 GMT</lastBuildDate><pubDate>Wed, 01 Sep 2010 22:32:47 GMT</pubDate><ttl>60</ttl><item><title>Swing 线程之SwingUtilities.invokeLater() </title><link>http://www.blogjava.net/jnbzwm/articles/330553.html</link><dc:creator>Java你我</dc:creator><author>Java你我</author><pubDate>Wed, 01 Sep 2010 04:05:00 GMT</pubDate><guid>http://www.blogjava.net/jnbzwm/articles/330553.html</guid><wfw:comment>http://www.blogjava.net/jnbzwm/comments/330553.html</wfw:comment><comments>http://www.blogjava.net/jnbzwm/articles/330553.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jnbzwm/comments/commentRss/330553.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jnbzwm/services/trackbacks/330553.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 现在我们要做一个简单的界面。包括一个进度条、一个输入框、开始和停止按钮。需要实现的功能是：当点击开始按钮，则更新进度条，并且在输入框内把完成的百分比输出(这里只做例子，没有真正去做某个工作)。import&nbsp;java.awt.FlowLayout;&nbsp;&nbsp;&nbsp;import&nbsp;java.awt.event.ActionEvent;&nbsp...&nbsp;&nbsp;<a href='http://www.blogjava.net/jnbzwm/articles/330553.html'>阅读全文</a><img src ="http://www.blogjava.net/jnbzwm/aggbug/330553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jnbzwm/" target="_blank">Java你我</a> 2010-09-01 12:05 <a href="http://www.blogjava.net/jnbzwm/articles/330553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>try-catch-finally的用法之finally </title><link>http://www.blogjava.net/jnbzwm/articles/330552.html</link><dc:creator>Java你我</dc:creator><author>Java你我</author><pubDate>Wed, 01 Sep 2010 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/jnbzwm/articles/330552.html</guid><wfw:comment>http://www.blogjava.net/jnbzwm/comments/330552.html</wfw:comment><comments>http://www.blogjava.net/jnbzwm/articles/330552.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jnbzwm/comments/commentRss/330552.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jnbzwm/services/trackbacks/330552.html</trackback:ping><description><![CDATA[<p><span style="font-family: SimSun">关于</span>try-catch-finally<span style="font-family: SimSun">的用法我就不多说了。网上搜一下，资料很多。</span></p>
<p><span style="font-family: SimSun">这里我想主要讨论下在</span><strong><span style="color: #ff0000">finally</span></strong><span style="font-family: SimSun">块加入</span><strong><span style="color: #ff0000">return</span></strong><span style="font-family: SimSun"><strong><span style="color: #ff0000">语句</span></strong>，<strong><span style="color: #ff0000">屏蔽异常</span></strong>的问题。</span></p>
<p><span style="font-family: SimSun">我们先来看这样一段代码，</span></p>
<p><span style="font-family: SimSun"><br />
</span></p>
<p><span style="font-family: SimSun">代码</span>1<span style="font-family: SimSun">：</span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img id="Codehighlighter1_25_481_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_481_Open_Text.style.display='none'; Codehighlighter1_25_481_Closed_Image.style.display='inline'; Codehighlighter1_25_481_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_25_481_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_25_481_Closed_Text.style.display='none'; Codehighlighter1_25_481_Open_Image.style.display='inline'; Codehighlighter1_25_481_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;FinallyTest&nbsp;</span><span id="Codehighlighter1_25_481_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_73_120_Open_Image" onclick="this.style.display='none'; Codehighlighter1_73_120_Open_Text.style.display='none'; Codehighlighter1_73_120_Closed_Image.style.display='inline'; Codehighlighter1_73_120_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_73_120_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_73_120_Closed_Text.style.display='none'; Codehighlighter1_73_120_Open_Image.style.display='inline'; Codehighlighter1_73_120_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">static</span>&nbsp;<span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_73_120_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FinallyTest().print();&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img id="Codehighlighter1_149_476_Open_Image" onclick="this.style.display='none'; Codehighlighter1_149_476_Open_Text.style.display='none'; Codehighlighter1_149_476_Closed_Image.style.display='inline'; Codehighlighter1_149_476_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_149_476_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_149_476_Closed_Text.style.display='none'; Codehighlighter1_149_476_Open_Image.style.display='inline'; Codehighlighter1_149_476_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;print()&nbsp;</span><span id="Codehighlighter1_149_476_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span>&nbsp;<span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img id="Codehighlighter1_189_260_Open_Image" onclick="this.style.display='none'; Codehighlighter1_189_260_Open_Text.style.display='none'; Codehighlighter1_189_260_Closed_Image.style.display='inline'; Codehighlighter1_189_260_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_189_260_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_189_260_Closed_Text.style.display='none'; Codehighlighter1_189_260_Open_Image.style.display='inline'; Codehighlighter1_189_260_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span>&nbsp;<span id="Codehighlighter1_189_260_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">=</span>&nbsp;<span style="color: #000000">1</span>&nbsp;<span style="color: #000000">/</span>&nbsp;<span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img id="Codehighlighter1_282_380_Open_Image" onclick="this.style.display='none'; Codehighlighter1_282_380_Open_Text.style.display='none'; Codehighlighter1_282_380_Closed_Image.style.display='inline'; Codehighlighter1_282_380_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_282_380_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_282_380_Closed_Text.style.display='none'; Codehighlighter1_282_380_Open_Image.style.display='inline'; Codehighlighter1_282_380_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span>&nbsp;<span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;</span><span id="Codehighlighter1_282_380_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">at&nbsp;catch&nbsp;block&nbsp;step&nbsp;1.</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;e;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_390_467_Open_Image" onclick="this.style.display='none'; Codehighlighter1_390_467_Open_Text.style.display='none'; Codehighlighter1_390_467_Closed_Image.style.display='inline'; Codehighlighter1_390_467_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_390_467_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_390_467_Closed_Text.style.display='none'; Codehighlighter1_390_467_Open_Image.style.display='inline'; Codehighlighter1_390_467_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span>&nbsp;<span style="color: #0000ff">finally</span>&nbsp;<span id="Codehighlighter1_390_467_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">at&nbsp;finally&nbsp;block&nbsp;i&nbsp;=&nbsp;</span><span style="color: #000000">"</span>&nbsp;<span style="color: #000000">+</span><span style="color: #000000">&nbsp;i);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<br />
<br />
<p><span style="font-size: 10pt; color: black; font-family: SimSun">以上代码在</span><span style="font-size: 10pt; color: black; font-family: 'ＭＳ ゴシック'">Eclipse</span><span style="font-size: 10pt; color: black; font-family: SimSun">里是不会编译通过的，因为在</span><span style="font-size: 10pt; color: black; font-family: 'ＭＳ ゴシック'">catch</span><span style="font-size: 10pt; color: black; font-family: SimSun">块中</span><span style="font-size: 10pt; color: black; font-family: 'ＭＳ ゴシック'">throw</span><span style="font-size: 10pt; color: black; font-family: SimSun">了一个异常，而</span><span style="font-size: 10pt; color: black; font-family: 'ＭＳ ゴシック'">print</span><span style="font-size: 10pt; color: black; font-family: SimSun">方法并没有声明要抛出异常。</span></p>
<p><span style="font-size: 10pt; color: black; font-family: SimSun"><br />
</span></p>
<p><span style="font-family: SimSun">现在我们修改代码，让它能够通过编译，代码</span>2<span style="font-family: SimSun">：<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img id="Codehighlighter1_25_192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_192_Open_Text.style.display='none'; Codehighlighter1_25_192_Closed_Image.style.display='inline'; Codehighlighter1_25_192_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_25_192_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_25_192_Closed_Text.style.display='none'; Codehighlighter1_25_192_Open_Image.style.display='inline'; Codehighlighter1_25_192_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;FinallyTest&nbsp;</span><span id="Codehighlighter1_25_192_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_90_137_Open_Image" onclick="this.style.display='none'; Codehighlighter1_90_137_Open_Text.style.display='none'; Codehighlighter1_90_137_Closed_Image.style.display='inline'; Codehighlighter1_90_137_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_90_137_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_90_137_Closed_Text.style.display='none'; Codehighlighter1_90_137_Open_Image.style.display='inline'; Codehighlighter1_90_137_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">static</span>&nbsp;<span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;</span><span id="Codehighlighter1_90_137_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FinallyTest().print();&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img id="Codehighlighter1_183_192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_183_192_Open_Text.style.display='none'; Codehighlighter1_183_192_Closed_Image.style.display='inline'; Codehighlighter1_183_192_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_183_192_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_183_192_Closed_Text.style.display='none'; Codehighlighter1_183_192_Open_Image.style.display='inline'; Codehighlighter1_183_192_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;print()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;</span><span id="Codehighlighter1_183_192_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&#8230;&nbsp;&nbsp;<br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" /></span></div>
</span></span><br />
<br />
<p><span style="font-size: 10pt; color: black; font-family: SimSun">就是在</span><span style="font-size: 10pt; color: black; font-family: 'ＭＳ ゴシック'">print</span><span style="font-size: 10pt; color: black; font-family: SimSun">和</span><span style="font-size: 10pt; color: black; font-family: 'ＭＳ ゴシック'">main</span><span style="font-size: 10pt; color: black; font-family: SimSun">方法后加</span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'ＭＳ ゴシック'">throws</span></strong><span style="font-size: 10pt; color: black; font-family: 'ＭＳ ゴシック'"> Exception</span><span style="font-size: 10pt; color: black; font-family: SimSun">，然后运行，看运行结果：<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">at&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;block&nbsp;step&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />at&nbsp;</span><span style="color: #0000ff">finally</span><span style="color: #000000">&nbsp;block&nbsp;i&nbsp;</span><span style="color: #000000">=</span>&nbsp;<span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />Exception&nbsp;in&nbsp;thread&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">main</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;java.lang.ArithmeticException:&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;by&nbsp;zero&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;wxhx.csdn2.FinallyTest.print(FinallyTest.java:</span><span style="color: #000000">12</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;wxhx.csdn2.FinallyTest.main(FinallyTest.java:</span><span style="color: #000000">5</span><span style="color: #000000">)&nbsp;&nbsp;</span></div>
<p style="text-align: left" align="left"><span style="font-family: SimSun">程序先是走到了</span>catch<span style="font-family: SimSun">块的第一句，打印了</span><span style="font-size: 10pt; color: black; font-family: 'ＭＳ ゴシック'">at catch block step 1.</span></p>
<p><span style="font-family: SimSun">但并没有紧接着去</span>throw e<span style="font-family: SimSun">，<strong><span style="color: #ff0000">即没有立刻抛出这个异常</span></strong>，之所以这样说，是因为异常的信息是在</span>finally<span style="font-family: SimSun">块的打印信息之后才打印的。</span></p>
<p><span style="font-family: SimSun">这个例子告诉我们，</span>finally<span style="font-family: 'ＭＳ 明朝'">不管出</span><span style="font-family: PMingLiU">现</span><span style="font-family: 'ＭＳ 明朝'">异常与否，</span><strong><span style="color: red; font-family: 'ＭＳ 明朝'">都必</span></strong><strong><span style="color: red; font-family: PMingLiU">须</span></strong><strong><span style="color: red; font-family: 'ＭＳ 明朝'">去</span></strong><strong><span style="color: red; font-family: PMingLiU">执</span></strong><strong><span style="color: red; font-family: 'ＭＳ 明朝'">行的代</span></strong><strong><span style="color: red; font-family: PMingLiU">码</span></strong><span style="font-family: 'ＭＳ 明朝'">。</span><span style="font-family: SimSun">（如果中途终止了</span>jvm<span style="font-family: SimSun">，就不必去执行了）</span></p>
<p><span style="font-family: SimSun">那么何时执行</span>finally<span style="font-family: SimSun">块中的代码呢？</span></p>
<p><span style="font-family: SimSun">在这个例子中，</span>try<span style="font-family: SimSun">块中有异常抛出，所以</span>finally<span style="font-family: SimSun">块中的代码<strong><span style="color: red">是在执行了</span></strong></span><strong><span style="color: red">catch</span></strong><strong><span style="color: red; font-family: SimSun">语句之后、退出方法之前被执行的</span></strong>(<span style="font-family: SimSun">如果这里执行了</span>throw e<span style="font-family: SimSun">，则方法就退出了</span>) <span style="font-family: SimSun">。</span></p>
<p><br />
&nbsp;</p>
<p><span style="font-family: SimSun">下面再看另外一个代码，代码</span>3<span style="font-family: SimSun">：</span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img id="Codehighlighter1_25_504_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_504_Open_Text.style.display='none'; Codehighlighter1_25_504_Closed_Image.style.display='inline'; Codehighlighter1_25_504_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_25_504_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_25_504_Closed_Text.style.display='none'; Codehighlighter1_25_504_Open_Image.style.display='inline'; Codehighlighter1_25_504_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;FinallyTest&nbsp;</span><span id="Codehighlighter1_25_504_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_73_120_Open_Image" onclick="this.style.display='none'; Codehighlighter1_73_120_Open_Text.style.display='none'; Codehighlighter1_73_120_Closed_Image.style.display='inline'; Codehighlighter1_73_120_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_73_120_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_73_120_Closed_Text.style.display='none'; Codehighlighter1_73_120_Open_Image.style.display='inline'; Codehighlighter1_73_120_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">static</span>&nbsp;<span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_73_120_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FinallyTest().print();&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img id="Codehighlighter1_149_499_Open_Image" onclick="this.style.display='none'; Codehighlighter1_149_499_Open_Text.style.display='none'; Codehighlighter1_149_499_Closed_Image.style.display='inline'; Codehighlighter1_149_499_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_149_499_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_149_499_Closed_Text.style.display='none'; Codehighlighter1_149_499_Open_Image.style.display='inline'; Codehighlighter1_149_499_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;print()&nbsp;</span><span id="Codehighlighter1_149_499_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span>&nbsp;<span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img id="Codehighlighter1_189_260_Open_Image" onclick="this.style.display='none'; Codehighlighter1_189_260_Open_Text.style.display='none'; Codehighlighter1_189_260_Closed_Image.style.display='inline'; Codehighlighter1_189_260_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_189_260_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_189_260_Closed_Text.style.display='none'; Codehighlighter1_189_260_Open_Image.style.display='inline'; Codehighlighter1_189_260_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span>&nbsp;<span id="Codehighlighter1_189_260_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">=</span>&nbsp;<span style="color: #000000">1</span>&nbsp;<span style="color: #000000">/</span>&nbsp;<span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img id="Codehighlighter1_282_380_Open_Image" onclick="this.style.display='none'; Codehighlighter1_282_380_Open_Text.style.display='none'; Codehighlighter1_282_380_Closed_Image.style.display='inline'; Codehighlighter1_282_380_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_282_380_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_282_380_Closed_Text.style.display='none'; Codehighlighter1_282_380_Open_Image.style.display='inline'; Codehighlighter1_282_380_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span>&nbsp;<span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;</span><span id="Codehighlighter1_282_380_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">at&nbsp;catch&nbsp;block&nbsp;step&nbsp;1.</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;e;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_390_490_Open_Image" onclick="this.style.display='none'; Codehighlighter1_390_490_Open_Text.style.display='none'; Codehighlighter1_390_490_Closed_Image.style.display='inline'; Codehighlighter1_390_490_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_390_490_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_390_490_Closed_Text.style.display='none'; Codehighlighter1_390_490_Open_Image.style.display='inline'; Codehighlighter1_390_490_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span>&nbsp;<span style="color: #0000ff">finally</span>&nbsp;<span id="Codehighlighter1_390_490_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">at&nbsp;finally&nbsp;block&nbsp;i&nbsp;=&nbsp;</span><span style="color: #000000">"</span>&nbsp;<span style="color: #000000">+</span><span style="color: #000000">&nbsp;i);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span>&nbsp;</div>
<p><br />
&nbsp;</p>
<p>这段代码与之前相比，在finally块中增加了return语句。</p>
<p>虽然在catch块中有throw e语句，但在print方法后并不用声明throws Exception，也可以通过编译。</p>
<p>因为在try块中有Thread.sleep(1);语句，所以必须要捕获InterruptedException，但在这种情况下，即使我们把catch块去掉了，也不会有问题，这是怎么回事呢？</p>
<p>因为在finally块中的return语句屏蔽了异常。</p>
<p>经过代码2我们已经知道了，异常在finally块被执行之前，虽然会执行catch块中的代码，但并不会退出方法，在退出方法之前，会转向finally块中执行，而在finally块中又恰好有return语句，所以方法就正常退出了，在try块中产生的异常就不会有机会被抛出。</p>
<p><br />
----2009年02月13日</p>
<p></span></p>
</span>
<img src ="http://www.blogjava.net/jnbzwm/aggbug/330552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jnbzwm/" target="_blank">Java你我</a> 2010-09-01 12:00 <a href="http://www.blogjava.net/jnbzwm/articles/330552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浅析 Java Thread.join()</title><link>http://www.blogjava.net/jnbzwm/articles/330549.html</link><dc:creator>Java你我</dc:creator><author>Java你我</author><pubDate>Wed, 01 Sep 2010 03:52:00 GMT</pubDate><guid>http://www.blogjava.net/jnbzwm/articles/330549.html</guid><wfw:comment>http://www.blogjava.net/jnbzwm/comments/330549.html</wfw:comment><comments>http://www.blogjava.net/jnbzwm/articles/330549.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jnbzwm/comments/commentRss/330549.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jnbzwm/services/trackbacks/330549.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、在研究join的用法之前，先明确两件事情。1.join方法定义在Thread类中，则调用者必须是一个线程，例如：Thread t = new CustomThread();//这里一般是自定义的线程类t.start();//线程起动t.join();//此处会抛出InterruptedException异常&nbsp;2.上面的两行代码也是在一个线程里面执行的。...&nbsp;&nbsp;<a href='http://www.blogjava.net/jnbzwm/articles/330549.html'>阅读全文</a><img src ="http://www.blogjava.net/jnbzwm/aggbug/330549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jnbzwm/" target="_blank">Java你我</a> 2010-09-01 11:52 <a href="http://www.blogjava.net/jnbzwm/articles/330549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>做Swing桌面程序，该怎样将组件与业务逻辑分离？</title><link>http://www.blogjava.net/jnbzwm/articles/J2SE_Swing.html</link><dc:creator>Java你我</dc:creator><author>Java你我</author><pubDate>Wed, 01 Sep 2010 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/jnbzwm/articles/J2SE_Swing.html</guid><wfw:comment>http://www.blogjava.net/jnbzwm/comments/330536.html</wfw:comment><comments>http://www.blogjava.net/jnbzwm/articles/J2SE_Swing.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jnbzwm/comments/commentRss/330536.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jnbzwm/services/trackbacks/330536.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 做Swing桌面程序，该怎样将组件与业务逻辑分离？这是一个问题。因为没有深入学习过这方面的知识，所以自己也没有想过如何能实现这种分离。今天有个朋友用Swing做了一个小的桌面程序，是一个简单的管理系统。代码很复杂，主要是写的很复杂，没有逻辑和层次感，到处是组件，到处是判断，每追加一个功能，代码就要翻来翻去找很久。于是今天晚上自己闲来无事，简单的写了一些代码，看是否可以将...&nbsp;&nbsp;<a href='http://www.blogjava.net/jnbzwm/articles/J2SE_Swing.html'>阅读全文</a><img src ="http://www.blogjava.net/jnbzwm/aggbug/330536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jnbzwm/" target="_blank">Java你我</a> 2010-09-01 11:25 <a href="http://www.blogjava.net/jnbzwm/articles/J2SE_Swing.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>