正在加载图片...
Thinking in Java 3 Edition 就像Java中的其它对象,你也可以用new在堆中创建异常,而new 会调用它的构造函数并为它分配内存。所有的标准异常都有两个构造函 数;第一个是默认的构造函数,第二个是要拿一个字符串当参数的,因此 你可以在异常中放入一些相关的信息: throw new NullPointerException("t=null") 就像你将看到的,将来这个字符串可以用各种方法提取出来。 关键词 throw会引发许多很神奇的事情。通常情况下,你会先用new 来创建一个表示错误条件的对象。然后再把这个对象的 reference交给 throw。虽然这个对象不是方法设计要返回的那种对象,但实际上,方 法还是返回这个对象。有一种理解异常处理的简化思路,就是把它想成一 种不同的返回机制。但是这种想法别走得太远,否则就有麻烦了。你也可 以用“抛异常”的方法从方法的作用域里退出。总之,它会返回了一个 值,并且退出了方法或作用域 异常处理与“从方法中正常返回”的相同点就到此为止了,因为它所返回 的地点同正常的方法调用所返回的地点是完全不同的。(它最终是要在某 个异常处理程序里面得到解决的,而这个程序可能离异常发生的地方很 远——与“调用栈( call stack)”隔着很多层。) 此外,你还可以抛出任何 Throwable对象(这是异常的根类)。通常情 况下,你得根据不同的错误抛出不同的异常。错误信息由保存在异常对象 中信息,以及异常类的名字表示。于是上层的运行环境就可以用这个异常 来决定该怎么干了。(通常,异常类型的名字是唯一的信息,异常对象不 会保存什么有用的东西。) 捕捉异常 如果方法抛出了异常,那么必须要有能“捕捉”这个异常,并且处理这个 异常的程序。异常处理有一个好处,就是它能让你集中精力在一个地方解 决问题,然后将处理错误的代码分开来放在另一个地方。 要想理解异常是怎样被捕捉到的,你必须首先懂得“守护区域( guarded reglon)”的概念。这是一段可能会产生异常的代码,并且后面还跟着要 处理这些异常的代码。 Try区块 如果你从方法里面抛出了一个异常(或是在这个方法调用的另一个方法里 面抛出一个异常),那么抛出异常的同时,这个方法会退出运行。如果你 不想被 throw出方法,那么你可以在这个方法的内部建一个特殊的区块 第3页共3页 www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.comThinking in Java 3 rd Edition ✞ 3 ✟ ✠ 3 ✟ www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.com ô Java !U9÷`#±$žS new a!ÎbèZ#µ new ~º9stuQi9'vwx,-vyèZ.-z\stu Q {^\|stuQ#{}\;~^\€F‚Q#Ɓ ±žSèZ!ƒ™^2„GHÊ throw new NullPointerException("t = null"); ô±D#D`R\€žS…?@n†‡„` „ˆõ th row ~C0U[䉥¢ <Z «#±~ new `Îb^\øù©ª÷`xyþ R\÷` referen ce J th rowŠxR\÷`@nu‹;opK?÷`#+­ãg#@ n³opR\÷`-^?8ÙèZ78nÛö\#  9²Í^ ?op2+R?²n¡ŒŽ#ï -‘…±$ž SLèZ@nb@n»’„))#9~op…^\ s#i¬„…@nt»’ èZ78b@n!PZop¯ =…#Æ9,op ¯PZ@nº,op¯½(9•;> \èZ78%&ÙÚ#µR\%&ž'èZ0ü@ä Žššº(cal l stack)™‰ä[K) š#±³žSL„›ý Th rowable ÷`(RèZ )<Z «#± VL„èZGHœxèZ÷` !GH#STèZøùkgK(DE žSR\èZ `ÚeN‡ž…(<Z#èZÐ.^GH#èZ÷` ~œx†‡-Ÿ )  ¶·@nL„…èZ#K‡;-'R\èZ#i¬78R\ èZ%&èZ78-^\7# 9'B± !¡¢^\@Ù Ú34#xyD78 '(`ƒ£^\@ ;²8ÙèZNO/#±_¤¥ÕB’(guarded region)¦§R^¨ž'~©üèZ #i¬y³ª‰; 78R2èZ  Try  ¶·±b@nL„…^\èZ (tR\@nº£^\@n L„^\èZ )#K‡L„èZ#R\@n~„(¶·± ²/ th row „@n#K‡±žSR\@nw>b^\qrB«
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有