﻿<?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-无言独上西楼，月如钩，寂寞梧桐深夜锁清秋</title><link>http://www.blogjava.net/flybean/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 01 May 2026 09:23:32 GMT</lastBuildDate><pubDate>Fri, 01 May 2026 09:23:32 GMT</pubDate><ttl>60</ttl><item><title>准确地抛出异常（旧贴子）</title><link>http://www.blogjava.net/flybean/archive/2006/04/12/40661.html</link><dc:creator>无言独上西楼</dc:creator><author>无言独上西楼</author><pubDate>Wed, 12 Apr 2006 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/flybean/archive/2006/04/12/40661.html</guid><wfw:comment>http://www.blogjava.net/flybean/comments/40661.html</wfw:comment><comments>http://www.blogjava.net/flybean/archive/2006/04/12/40661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flybean/comments/commentRss/40661.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flybean/services/trackbacks/40661.html</trackback:ping><description><![CDATA[
		<span>
				<span id="BlogViewId">
						<p>　　五一节（2005年啦），新本本分到手了，于是咱就动手装系统了。OS换成了Windows2003，然后稀里花啦装
了一堆软件。装完之后，配置一个缺陷管理软件，载入原有数据，然后就发现连接不上了。系统抛出一个第三方数据库连接器封装后的异常，说是无法装载驱动程序。检
查ODBC、检查PATH，一切OK。把所有可能的目录全改为EVERYONE完全控制<img src="http://spaces.msn.com/mmm2005-04-13_18.20/RTE/emoticons/smile_sad.gif" onclick="javascript:window.open(this.src);" style="cursor: pointer;" onload="javascript:if(this.width&gt;500)this.style.width=500;" height="19" width="19" />，
还是无法装载驱动程序。OK，咱想不会是MDAC的问题吧，查看MDAC版本，啊呀，居然是2.8。记忆中好象2.8与老的ODBC驱动有点不兼容，
DOWNGRADE也不成。唉，算了，咱重装系统吧，在2000P上咱家装这个软件有很多次了，都没有问题。反正是新本本，51也有时间。于是重装OS，
DOWNGRADE为2000P，这一次咱就狡滑了一点点，先装这个有问题的软件。装完之后，一试，还是无法装载驱动程序。<img src="http://spaces.msn.com/mmm2005-04-13_18.20/RTE/emoticons/smile_baringteeth.gif" onclick="javascript:window.open(this.src);" style="cursor: pointer;" onload="javascript:if(this.width&gt;500)this.style.width=500;" height="19" width="19" />这
下可晕菜了。一咬牙，重装系统，上2000Server。这样连不上ORACLE，咱还可以移植到SQL　Server。这一次装完ORACLE之后，先
装了一个数据库访问工具软件，通过ODBC能访问数据库。太太地安心了，呵呵。于是装Oracle
Manager。装完发现用ODBC连不上库了！系统抛出的异常是ORACLE自身的无此服务名。啊阿，原来是这样地说。</p>
						<p>　　原来咱被第三方的连接器骗了！它捕获了ORALE自身抛出的异常后，统一抛出了无法装载驱动程序的异常，这样真实的原因就消失了。作为异常，它本身就应该准确地指出出现问题的地方的原因。不正确的封装和处理，导致了毫无意义的异常。</p>
						<p>　　想开了去，很多软件都存在这样的问题，比如下面的代码：</p>
						<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
								<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
								<span style="color: rgb(0, 0, 255);">public</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">void</span>
								<span style="color: rgb(0, 0, 0);"> checkAll() </span>
								<span style="color: rgb(0, 0, 255);">throws</span>
								<span style="color: rgb(0, 0, 0);"> CheckException{<br /><br />  </span>
								<span style="color: rgb(0, 0, 255);">for</span>
								<span style="color: rgb(0, 0, 0);"> (</span>
								<span style="color: rgb(0, 0, 255);">int</span>
								<span style="color: rgb(0, 0, 0);"> i</span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);">0</span>
								<span style="color: rgb(0, 0, 0);">;i</span>
								<span style="color: rgb(0, 0, 0);">&lt;</span>
								<span style="color: rgb(0, 0, 0);">items.length;i</span>
								<span style="color: rgb(0, 0, 0);">++</span>
								<span style="color: rgb(0, 0, 0);">){<br /><br />    checkItem(items[i]);<br /><br />  }<br /><br />}<br /><br /></span>
								<span style="color: rgb(0, 0, 255);">public</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">void</span>
								<span style="color: rgb(0, 0, 0);"> checkItem(Item item) </span>
								<span style="color: rgb(0, 0, 255);">throws</span>
								<span style="color: rgb(0, 0, 0);"> CheckException{<br /><br />  </span>
								<span style="color: rgb(0, 0, 255);">if</span>
								<span style="color: rgb(0, 0, 0);"> (check not passed)<br /><br />    </span>
								<span style="color: rgb(0, 0, 255);">throw</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">new</span>
								<span style="color: rgb(0, 0, 0);"> CheckException(</span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);">Check not passed</span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);">);<br /><br />}</span>
						</div>
						<br />
						<p>　　上面的代码中，抛出的异常正确地指明了异常类型，即检查未通过，但存在的问题是：哪一项的检查未通过？如果ITEMS有数百项，运行过程中出了问题，又有誰知道是哪一项的数据有问题？如果checkItem改一改就很好了，如：</p>
						<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
								<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
								<span style="color: rgb(0, 0, 255);">public</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">void</span>
								<span style="color: rgb(0, 0, 0);"> checkItem(Item item) </span>
								<span style="color: rgb(0, 0, 255);">throws</span>
								<span style="color: rgb(0, 0, 0);"> CheckException{<br /><br />  </span>
								<span style="color: rgb(0, 0, 255);">if</span>
								<span style="color: rgb(0, 0, 0);"> (check not passed)<br /><br />    </span>
								<span style="color: rgb(0, 0, 255);">throw</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">new</span>
								<span style="color: rgb(0, 0, 0);"> CheckException(</span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);">Check not passed, item is :</span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 0);">+</span>
								<span style="color: rgb(0, 0, 0);"> item.getName());<br /><br />}</span>
						</div>
						<br />
				</span>
		</span>
<img src ="http://www.blogjava.net/flybean/aggbug/40661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flybean/" target="_blank">无言独上西楼</a> 2006-04-12 15:27 <a href="http://www.blogjava.net/flybean/archive/2006/04/12/40661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2005年十大IT事件（Infoworld版）</title><link>http://www.blogjava.net/flybean/archive/2005/12/21/infoworld_2005_it_top_ten.html</link><dc:creator>无言独上西楼</dc:creator><author>无言独上西楼</author><pubDate>Wed, 21 Dec 2005 01:40:00 GMT</pubDate><guid>http://www.blogjava.net/flybean/archive/2005/12/21/infoworld_2005_it_top_ten.html</guid><wfw:comment>http://www.blogjava.net/flybean/comments/24914.html</wfw:comment><comments>http://www.blogjava.net/flybean/archive/2005/12/21/infoworld_2005_it_top_ten.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flybean/comments/commentRss/24914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flybean/services/trackbacks/24914.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <br>沃尔码, DoD 强制要求RFID（1月1日）<br>Oracle完成对PeolpeSoft的收购（1月7日）<br>“The World is Flat”一书发表（4月5日）<br>CardSystem被黑（5月22日）<br>Sun开放Solaris（6月14日）<br>AMD控告Intel（6月28日）<br>SOX再一次延迟（9月21日）<br>马萨诸塞州为Open Documents投票（9月21日）<br>Vapor Without the Ware（10月4日）<br>SQL Server, Visual Studio 2005面世（11月7日）&nbsp;&nbsp;<a href='http://www.blogjava.net/flybean/archive/2005/12/21/infoworld_2005_it_top_ten.html'>阅读全文</a><img src ="http://www.blogjava.net/flybean/aggbug/24914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flybean/" target="_blank">无言独上西楼</a> 2005-12-21 09:40 <a href="http://www.blogjava.net/flybean/archive/2005/12/21/infoworld_2005_it_top_ten.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Avalon将从内核中移出</title><link>http://www.blogjava.net/flybean/archive/2005/12/21/ms_avalon_out_kernel.html</link><dc:creator>无言独上西楼</dc:creator><author>无言独上西楼</author><pubDate>Tue, 20 Dec 2005 17:02:00 GMT</pubDate><guid>http://www.blogjava.net/flybean/archive/2005/12/21/ms_avalon_out_kernel.html</guid><wfw:comment>http://www.blogjava.net/flybean/comments/24895.html</wfw:comment><comments>http://www.blogjava.net/flybean/archive/2005/12/21/ms_avalon_out_kernel.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flybean/comments/commentRss/24895.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flybean/services/trackbacks/24895.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 　　<br>　　据Techworld12月14日的消息，为了提高可靠性，M$将把下一代Windows的图形子系统从内核中移出来。<br>　　可以期待的是，或许有一天在M$的OS上，跑的窗口管理系统并不是MS Windows，而是一些开源的窗口管理器，如KDE之类的。&nbsp;&nbsp;<a href='http://www.blogjava.net/flybean/archive/2005/12/21/ms_avalon_out_kernel.html'>阅读全文</a><img src ="http://www.blogjava.net/flybean/aggbug/24895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flybean/" target="_blank">无言独上西楼</a> 2005-12-21 01:02 <a href="http://www.blogjava.net/flybean/archive/2005/12/21/ms_avalon_out_kernel.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>更新M$十二月的补丁后，可能对B/S应用带来影响</title><link>http://www.blogjava.net/flybean/archive/2005/12/19/ms_security_MS05_054.html</link><dc:creator>无言独上西楼</dc:creator><author>无言独上西楼</author><pubDate>Mon, 19 Dec 2005 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/flybean/archive/2005/12/19/ms_security_MS05_054.html</guid><wfw:comment>http://www.blogjava.net/flybean/comments/24569.html</wfw:comment><comments>http://www.blogjava.net/flybean/archive/2005/12/19/ms_security_MS05_054.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/flybean/comments/commentRss/24569.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flybean/services/trackbacks/24569.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 安装了M$十二月的补丁后，可能影响使用了ActiveX的B/S应用，存在两种可能的原因。&nbsp;&nbsp;<a href='http://www.blogjava.net/flybean/archive/2005/12/19/ms_security_MS05_054.html'>阅读全文</a><img src ="http://www.blogjava.net/flybean/aggbug/24569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flybean/" target="_blank">无言独上西楼</a> 2005-12-19 09:55 <a href="http://www.blogjava.net/flybean/archive/2005/12/19/ms_security_MS05_054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新店开张</title><link>http://www.blogjava.net/flybean/archive/2005/12/09/23187.html</link><dc:creator>无言独上西楼</dc:creator><author>无言独上西楼</author><pubDate>Fri, 09 Dec 2005 10:06:00 GMT</pubDate><guid>http://www.blogjava.net/flybean/archive/2005/12/09/23187.html</guid><wfw:comment>http://www.blogjava.net/flybean/comments/23187.html</wfw:comment><comments>http://www.blogjava.net/flybean/archive/2005/12/09/23187.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/flybean/comments/commentRss/23187.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flybean/services/trackbacks/23187.html</trackback:ping><description><![CDATA[原来有几个BLOG了，应朋友的邀约，于是又开张一个。<br>
这一个是OneNote的风格，恰恰我也在用OneNote做为个人的知识库，不知能否直接从OneNote发布过来。<br>
几个BLOG任其发展吧，有的早不更新了，也有不好使的原因。<img src ="http://www.blogjava.net/flybean/aggbug/23187.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flybean/" target="_blank">无言独上西楼</a> 2005-12-09 18:06 <a href="http://www.blogjava.net/flybean/archive/2005/12/09/23187.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于框架的杂谈－是谁惹的祸？</title><link>http://www.blogjava.net/flybean/archive/2005/12/09/frameworkmisc.html</link><dc:creator>无言独上西楼</dc:creator><author>无言独上西楼</author><pubDate>Fri, 09 Dec 2005 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/flybean/archive/2005/12/09/frameworkmisc.html</guid><wfw:comment>http://www.blogjava.net/flybean/comments/23184.html</wfw:comment><comments>http://www.blogjava.net/flybean/archive/2005/12/09/frameworkmisc.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flybean/comments/commentRss/23184.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flybean/services/trackbacks/23184.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 任何一种技术都可以解决一些问题，但与此同时，它也会带来一些问题。框架自然不会例外。这并不说我们不要去使用框架，而是我们要合理的使用框架。用自己团队最熟悉的技术，而不是最时髦的技术。&nbsp;&nbsp;<a href='http://www.blogjava.net/flybean/archive/2005/12/09/frameworkmisc.html'>阅读全文</a><img src ="http://www.blogjava.net/flybean/aggbug/23184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flybean/" target="_blank">无言独上西楼</a> 2005-12-09 17:38 <a href="http://www.blogjava.net/flybean/archive/2005/12/09/frameworkmisc.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>