正在加载图片...
Thinking in Java 3 Edition 注意,在try区块中,有可能会碰到“调用多个不同的方法会产生同一种 异常的”情况,但是这时你只需要一个异常处理程序 中止”还是“继续” 理论上将异常处理划分成两种基本模型。中止模型( temination,也就是 Java和C++所采纳的那种)假定错误是如此的严重,以致于你没办法再 回到错误发生的地方。也就是说,这段程序经过判断认为,它已经没有办 法再挽回这个局势了,于是只能抛出异常,并且希望这个错误别再回来。 还有一种被称为“继续( resumption)”。它的意思是,异常处理程序应 该能作些什么以修补当前的运行环境,然后重新尝试上次出错的那个方 法,它假设第二次能获得成功。“继续”的意思是,处理完异常之后,你 仍然希望能继续运行当前的指令。在这种情况下,异常更像是在调用方 法——如果你想在]ava中得到类似的效果,可以用这个办法来设置运行 环境。(也就是别抛出异常了;调用一个方法来解决这个问题。)此外,还 可以把try区块放到 while循环里面,这样就会重复的运行try区块, 直到你得到满意的结果。 长久以来,程序员所使用的操作系统都是用“继续模式”来处理异常的, 但是最终他们写代码的时候,都会跳开“继续模式”而采用“中止模 式”。所以尽管初听上去,“继续模式”很具吸引力,但是实际上并不是 那么实用。最主要的原因恐怕还是它所导致的耦合( coupling):通常异常 处理程序必须知道异常是从哪里抛出的,并且还要包括专门针对异常抛出 位置的非泛型代码。这使得代码非常难写,也无法维护。碰上会随时产生 异常的大型问题的时候,更是如此。 创建你自己的异常 Java没有限定你只能使用它提供的异常。JDK的异常体系不可能预见到 所有你要报告的异常,所以你可以用你自己创建的异常来表示你的类库可 能会遇到的问题。 要想创建你自己的异常,你必须继承已有的异常,最好是意思上同你要创 建的那个新的异常比较相近的那个(虽然不是经常能做到这一点)。创建 个新的异常类的最简单的做法是直接让编译器为你生成一个默认的构造函 数,这样做几乎不需要写任何代码 //: c09: SimpleExceptionDemo java / Inheriting your own exceptions mport com. bruceeckel. simpletest k class simpleException extends Exception ( public class simpleExceptionDemo private static Test monitor new Test ()i 第5页共5页 www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.comThinking in Java 3 rd Edition ✞ 5 ✟ ✠ 5 ✟ www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.com Æâ# try B«!#-ž'~Ǻ[\@n~©ü^? èZ «#+R±5;^\èZ78%&     8*gDèZ78È'Íz?ÉÐ!=ÉÐ(temination#$  Java ³ C+ + ,Ê K?)Ëe¶Ì#SÍk±ÀÎnþ p0ü@$ a#R¨%&Ì=‚ƒ#9ËÌÀ-Î nþÏpR\Ðх#k5'L„èZ#i¬z{R\¡þp` ³-^?/"?@(resumption)9âö#èZ78%& '»2†‡SÒÓF*(DE#xyÔk,g¹„K\@ n#9Ëu{}¹'Íg?@âö#78½èZ)y#± Õxz{'?@(F*ÅR? «#èZóôº@ nšš¶·±² Java !Ö×·#žSR\În`uØ( DE($ ¡L„èZ… º^\@n`ÙÚR\34)š#³ žS try B«ƒ wh ile ÙD#RO ~i( try B«# DZÚâ· åÛS`#%&’,Žì»ÄÅ.?@ÉA`78èZ# +•›:+ "#.~J(?@ÉAµÊ!=É A,SñòpÜg´#?@ÉAäÝÞC¢#+­ãgi K‡­ð;áÆßà³9,áÍâf(coupling) <ZèZ 78%&LMèZbãL„#i¬³;äåæçè÷èZL„ éØêÐ RŽ ZI+#$nÔÕÇg~ˆ©ü èZÏÐ34"#ó¶  Java À-ëe±5'Ž9†;èZJD K èZìÄž'Yl ,-±;/0èZ#,S±žS±•ÎbèZ`øù±‘ž '~C34 ;²Îb±•èZ#±?ÉË-èZ#âög±;Î bK\ÔèZíîK\(ŠxÌZ'mR^¯)Îb^ \ÔèZnomnÇ|B !1±üÍ^\|stu Q#ROm^ï;+›ý Ê //: c09:SimpleExceptionDemo.java // Inheriting your own exceptions. import com.bruceeckel.simpletest.*; class SimpleException extends Exception {} public class SimpleExceptionDemo { private static Test monitor = new Test();
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有