正在加载图片...
Thinking in Java 3 Edition Throwable. getMessage()方法。对于异常类来说, getMessage()有点像 tostring()。 由于异常同其它对象没什么两样,所以你可以不断地用这种方法来增强这 种自定义的异常类。但是要记住,当你把这些 package交给客户程序员 的时候,他们很可能会把这些“浇头”全给扔掉,因为他们可能只是单纯 地找到这个抛出的异常,其它什么都不管。(绝大多数的Java类库中的异 常都是这么用的。) 异常说明 java鼓励你告诉那些调用你方法的客户程序员们,你定义的方法可能会 抛出哪种异常。这是一种很友好的做法,因为这么一来,调用方法的人就 能知道应该写什么样的代码来捕捉潜在的异常了。当然,如果可以得到源 代码的话,客户程序员可以通过査找 throw语句来发现这点,但通常情 况下,他们是得不到类库的源代码的。为了应付这种情况,Java在语法 上提供了支持(同时也是强制你必须使用这种语法),能让你很礼貌地告诉 客户程序员们,这个方法能抛出什么异常,这样客户程序员就能自行处理 了。这就是“异常说明( exception specification)”,它属于方法声明 的一部分,要列在在参数表的后面 异常说明要用 throws关键词,后面再跟上所有可能抛出的异常类型的 清单。所以方法的定义可能会是这样: void f( throws TooBig, TooSmall, Divzero / 如果是 void f(// 这就意味着这个方法不会抛出任何异常(除非是继承自 Runtime Exception的异常,这类异常不需要异常说明就可以从任何 地方抛出——这一点我们以后会讲)。 你不能对异常说明撒谎。如果你的方法产生一个异常但又不作处理,那么 编译器就会提醒你,要么处理这个异常,要么在异常说明部分指明这个方 法会抛出这个异常。通过强化这种从顶层到底层的异常说明,Java提供 了一定程度的在编译时纠正异常的保障 不过还是有个能撒谎的地方:你可以声称方法会抛出一个实际上并不会抛 出的异常。编译器会当真的,它会要求客户程序员像真的会抛出异常那样 第9页共9页 www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.comThinking in Java 3 rd Edition ✞ 9 ✟ ✠ 9 ✟ www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.com Th rowable. getM essage( )@n÷kèZ`a# getM essage( )-¯ô toString( ) ÂkèZU9÷`À†‡zO#,S±žSƒR?@n`ûÒR ?•e:èZ+;€#F± R2 packag e J ú%&’ "#›:äž'~ R2 J #ƛ:ž'5o eR\L„èZ#U9†‡.ò(¤Ï[Q Java ‘!è Z.R‡)  Java ±0K2º±@n ú%&’:#±e:@nž'~ L„ã?èZR^?ämn#ÆR‡^`#º@n 'LM+†‡O `èZ…Fx#¶·žSî ¿# ú%&’žS<=¨e th row X¹`01R¯#+<Z «#›:‘î …R? «#Java Xn g†;…¬­($Ò2±ŽR?Xn)#'B±ä0 ú%&’:#R\@n'L„†‡èZ#RO ú%&’ '•78 …R èZaü (exception specification)#9jk@nü ^>'#;‚Qøy èZaü; th rows „ˆõ#yþªg,-ž'L„èZÐ o,S@ne:ž'~ROÊ void f() throws TooBig, TooSmall, DivZero { //... ¶· void f() { // ... R âû‰R\@n~L„›ýèZ (M?ɕ Ru ntim eException èZ#RèZ;èZaü žSb›ý @L„ššR^¯£:Sy~%) ±'÷èZaü¶·±@n©ü^\èZ+R»78#K‡ !1 ~†±#;‡78R\èZ#;‡èZaü>'ÅüR\@ n~L„R\èZ<=ÒÛR?bKKèZaü#Java †; …^e% ! PèZœ× =³-\'@ʱžS"@n~L„^\­ãgi~L „èZ !1~F!#9~;3 ú%&’ô!~L„èZKO
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有