正在加载图片...
Thinking in Java 3 Edition 9:用异常来处理错误 Java的基本哲学是“糟糕的代码根本就得不到执行”。 捕捉错误的最佳时机应该是在编译的时候,也就是程序能运行之前。但 是,不是所有的错误都能在编译的时候被发现。有些问题只能到程序运行 的时候才能得到处理。它们要通过某种方式,让引发问题的代码将适当的 信息传给那些知道该怎样正确处理这些问题的程序。 C以及其它早期语言通常都有多个错误处理的方案,一般来说它们都是建 立在约定的基础上的,其本身并不属于语言。最常见的做法是,返回一个 特殊的值或设定一个标志,然后希望接收方会看到这个值或标记,并以此 判断是不是出了什么问题。但是,随着时间的推移,人们发现,那些使用 着类库的程序员们通常都认为自己是刀枪不入的——他们的心态可以归纳 为“错误,那时别人的事,我的代码绝不可能有错。”所以,也就不奇怪 他们为什么不检查错误条件了(况且有些错误也实在是蠢了点40,以至于 你都想不到还要去检查)。而且,如果你真的每次调用方法的时候,都作 遍完整的错误检査的话,那代码也就没法读了。由于程序员们还能用这 些语言凑出一些系统,因此他们一直拒绝承认这样一个事实:这种错误处 理的方法已经成为创建大型的、强壮的、可维护的程序的巨大障碍了。 解决的方案就是,强化错误处理的规范性屏弃其原有的随意性。实际上, 这种做法已经有很长的历史了。因为异常处理( exception handling)的 实现最早可以追溯到1960年代的操作系统,甚至是 BASIC的“on error goto”。不过C++的异常处理源于Ada,而Java的则主要建立 在C++的基础之上(尽管看上去更像 Object Pascal的)。 exception”这个词的意思有“我对此表示反对”的意味。问题发生的 时候,可能你不知道该如何处理,但是你知道不能再没心没肺的运行下去 了;你必须停下来,自然会有人知道该如何处理,而处理方案也应该藏在 什么地方。但是在现有的条件下,你还不知道问题的详细情况,因此没法 解决这个问题。所以你应该把问题交上去,那里会有人来作决定的(就像 是行政命令,一级管一级) 异常还有一个非常重要的好处,就是让错误处理代码显得更有条理。与原 先“程序要在多个地方检査同一个错误,并就地作处理”相比,现在,你 无需再在方法调用的时候作检査了(因为异常肯定能被捕获)。而且处理问 题的代码也集中到一个被称作“异常处理程序( exception handler)”地 方了。这种做法能为你省下不少代码,而且还把“讲述要作什么的代 码”,同“出错的时候该执行的代码”分开来了。总之,无论是写代码还 是调试程序,使用异常都比用老式的错误处理更有条理。 第1页共2页 www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.comThinking in Java 3 rd Edition ￾ 1 ✁ ✂ 2 ✁ www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.com 9: Java     !"#$ %&'()*+ #,-.' !"/01-2345'%&( "6'789:;<=>?@A#BC034 DEF GHIJK2LMNOPQ78R234%& C STU9VWXY<Z.-[\78@]#^_`a9:.b cdefg#UhijkXYZlmn#op^\ qrstue^\vw#xyz{|}@~R\stv€#iS ‚ƒ„…†‡34+#ˆ‰Š‹Œ#:01#K2Ž ‰‘%&’:<Z.•™šš›:œžSŸ  #K¡¢#£ ¤ž'-,S#$ ¥¦ ›:†‡§¨©ª…(«¬-2$­®…¯ ✄☎ ✆ ✝ #S°k ±.²³;´§¨)µ¬#¶·±¸¹º@n"#.» ^¼½¾§¨¿#K $ ÀnÁ…Âk%&’:³'R 2XYÄ^2ÄÅ#Ɓ›:^ÇȤÉRO^\¢­ÊR?7 8@nËÌÍÎbÏÐÑ ÒÓÑ žÔÕ%&ÖÏ×؅ ÙÚ@] #ÒÛ78ÜÝÞßàUá-ˆâÞ­ãg# R?mnËÌ-äåæç…ÆèZ78(exception handling) ­1VžSéê 1 960 ë ì»ÄÅ#í° BASIC on error goto= C+ + èZ78îk Ada#µ Java ïð;bc  C+ + f)g(ñòg´óô Ob ject Pascal) excep ti on R\õâö-£÷øùú÷âû340ü "#ž'±LM¶ý78#+±LM'þÀœÀ(´ … ±`#•x~-LM¶ý78#µ78@]$ †‡@+1-©ª#±³LM34 «#ƁÀn ÙÚR\34,S± 34 g´#K~-`»Úe( ô #^ò^ ) èZ³-^\Z;7# B78 ó-©8á %&;[\@§¨^\#i »78#1#± þ@nº"»§¨…(ÆèZe'/)µ¬783 4 $ !^\/"»èZ78%&(exception handler) @…R?mn'±#$ #µ¬³ %&;»†‡ #„" '(`…))#*+ ³ º,%&#ŽèZ.-A78ó-©8
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有